#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdio>
#include<vector>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
int x;
int y;
int p;
int N;
int s[40][40];
inline void sovle()
{
memset(s,0,sizeof(s));
scanf("%d",&N); x=1; p=1;
for (int i=1;i<=N;i++)
for (int j=1;j<=N;j++)
s[i][j]=-1;
y=(N/2)+1; s[1][y]=1;
while (p!=N*N) {
p++;
if (x==1&&y!=N)
s[N][y+1]=p,x=N,y=y+1;
else {
if (y==N&&x!=1)
s[x-1][1]=p,x=x-1,y=1;
else {
if (x==1&&y==N)
s[x+1][y]=p,x=x+1;
else {
if (x!=1&&y!=N) {
if (s[x-1][y+1]==-1)
s[x-1][y+1]=p,x=x-1,y=y+1;
else
s[x+1][y]=p,x=x+1;
}
}
}
}
}
for (int i=1;i<=N;i++) {
for (int j=1;j<=N;j++)
printf("%d ",s[i][j]);
printf("\n");
}
}
int main()
{
solve();
return 0;
}