void tornadoPrint(int[][] array, int m, int n) {
if (m <= 0 || n <= 0) {
return;
}
// print top line
for (int i = 0; i < m; i++) {
printf("%d", array[0][i]);
}
if (n >= 2) {
// print right-most column
for (int i = 1; i < n - 1; i++) {
printf("%d", array[i][m - 1]);
}
// print bottom line
for (int i = m; i > 0; i-- ) {
printf("%d", array[n - 1][i - 1]);
}
// print left most column
for (int i = n - 2; i > 0; i--) {
printf("%d", array[i][0]);
}
}
tornadoPrint(&(array[1][1]), m - 2, n - 2);
}
if (m <= 0 || n <= 0) {
return;
}
// print top line
for (int i = 0; i < m; i++) {
printf("%d", array[0][i]);
}
if (n >= 2) {
// print right-most column
for (int i = 1; i < n - 1; i++) {
printf("%d", array[i][m - 1]);
}
// print bottom line
for (int i = m; i > 0; i-- ) {
printf("%d", array[n - 1][i - 1]);
}
// print left most column
for (int i = n - 2; i > 0; i--) {
printf("%d", array[i][0]);
}
}
tornadoPrint(&(array[1][1]), m - 2, n - 2);
}