#include <stdio.h>
#define MAX 13
// all index starts from 1 not 0
int a[MAX][MAX]={0};
// x->line ; y->column
// null right down left up
int dx[5]={-99,0,1,0,-1};
int dy[5]={-99,1,0,-1,0};
int n;
void init(){
for(int j=1;j<=n;j++)
a[0][j]=a[n+1][j]=-1;
for(int i=1;i<=n;i++)
a[i][0]=a[i][n+1]=-1;
}
void show(){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
printf("%3d",a[i][j]);
puts("");
}
}
int main(){
scanf("%d",&n);
// initialize as -1 and 0
init();
int x=1,y=1,num=1;
// direction changes
for(int i=0;1;i++){
int th=i%4+1;
while(1){
a[x][y]=num;
if(a[x+dx[th]][y+dy[th]]!=0)
break;
//a[x][y]=num++; 错误
num++;
x+=dx[th];
y+=dy[th];
}
// num>n*n 错误
if(num>=n*n)
break;
}
show();
return 0;
}