#include <stdio.h>
int add[][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
int mat[9][9];
int main(int argc, char **argv){
int i, j, l, d = 0, n, x = 0, y = 0, xx, yy;
fprintf(stdout, "正方形の一辺の長さ ");
fscanf(stdin, "%d", &l);
fprintf(stdout, "\n");
n = l * l;
for(i = 1; i <= n; i++){
mat[y][x] = i;
xx = x + add[d][0];
yy = y + add[d][1];
if(xx >= l || yy >= l || xx < 0 || yy < 0 || mat[yy][xx] > 0){
d++;
if(d >= 4)
d = 0;
}
x += add[d][0];
y += add[d][1];
}
for(i = 0; i < l; i++){
for(j = 0; j < l; j++)
printf("%3d", mat[i][j]);
printf("\n");
}
return 0;
}