#include<iostream>

using namespace std;

 

/*

1、首先将1填在方阵的第一行的中间,即(1,(n+1)/2)的位置。

2、下一个数填在上一个数的主对角线的上方,若上一个数的位置是(i,j)。下一个数为(i-1,j-1)

3、若应填写的位置下标出界,则出界的值用n来替代

4、若应填写的位置虽然没有出界,但是已经填有数据的话,则应填写在上一个数的下面,即(i+1,j)

*/

int main()

{

int n;

cin>>n;

int a[257][257];

int i,j,k,t;

int x;

int i1,j1;

x=1;

i=1;

j=(n+1)/2;

for(k=1;k<257;k++)

for(t=1;t<257;t++)

a[k][t]=0;

while(x<=n*n)

{

a[i][j]=x;

x++;

i1=i;

j1=j;

i=i-1;

j=j-1;

if(i==0)

i=n;

if(j==0)

j=n;

if(a[i][j]!=0)

{

i=i1+1;

j=j1;

}

}

for(k=1;k<=n;k++)

{

for(t=1;t<=n;t++)

cout<<a[k][t]<<" ";

cout<<endl;

}

return 0;

}