#include <stdio.h>
#define N 100
int a[N][N];
void magic(int n)
{
int i,j,t,u,v,x,y;
//奇数阶(2k+1)
if(n%2!=0)
{
y=(n+1)/2;x=y+1;
for(i=1;i<=n*n;i++)
{
a[x][y]=i;
if(i%n==0) x+=2;
else
{
x+=1;
y+=1;
}
if(x>n) x-=n;
if(y>n) y-=n;
}
}
//双偶阶(4k)
if(n%4==0)
{
t=n*n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if((i-j)%4==0 || (i+j-1)%4==0)
{
a[i][j]=t;
t-=1;
}
else
{
a[i][j]=n*(i-1)+j;
t-=1;
}
}
//单偶阶(4k+2)
if(n%4!=0 && n%2==0)
{
u=n/2;v=u*u;y=(u+1)/2;x=y+1;t=y;
for(i=1;i<=u*u;i++)
{
a[x][y]=i;a[x][y+u]=i+2*v;
a[x+u][y]=i+3*v;a[x+u][y+u]=i+v;
if(i%u==0)
x+=2;
else
{
x+=1;
y+=1;
}
if(x>u) x-=u;
if(y>u) y-=u;
}
for(i=1;i<=u;i++)
{
for(j=1;j<=n;j++)
if(j<=t-1 || j>=n-t+3)
{
x=a[i][j];a[i][j]=a[i+u][j];a[i+u][j]=x;
}
x=a[t][1];a[t][1]=a[t+u][1];a[t+u][1]=x;
x=a[t][t];a[t][t]=a[t+u][t];a[t+u][t]=x;
}
}
}
void main()
{
int n,i,j;
scanf("%d",&n);
magic(n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%5d",a[i][j]);
printf("/n");
}
}