#include<stdio.h>
int main()
{
int array[105][105]={};
int direct[4][2] = {{0, 1},
{1, 0},
{0, -1},
{-1, 0}
};
int x, y, p = 0;
int i, j ,n, k=1;
scanf("%d", &n);
for(i=0; i<=n+1; i++) // 2중반복문 0부터 n+1이 될때까지
{
for(j=0; j<=n+1; j++)
{
if(i==0 || j==0 || i==n+1 || j==n+1) // if문 i가 0이거나 j가 0 이거나 i가 n+1이거나 j가 n+1일때
{
array[i][j] = 9;
}
}
}
x = 1;
y = 1;
array[x][y] = k++;
for(i=1 ; i<=n*n-1 ; i++) // 반복문 1부터 n*n-1이 될때 까지
{
if(array[x + direct[p][0]][y + direct[p][1]] == 0) // if문 array배열이 0이라면
{
x += direct[p][0];
y += direct[p][1];
array[x][y] = k++;
}
else
{
i--;
p++;
p = p % 4; // p를 4로 나눈 나머지가 p
}
}
for(i=1 ; i<=n ; i++) // 2중반복문 1부터 n이 될때 까지
{
for(j=1 ; j<=n ; j++)
{
printf("%d " , array[i][j]);
}
printf("\n");
}
return 0;
}