#include<bits/stdc++.h>//万能头文件
using namespace std;
long long a[40][40];//a数组(这里定义的是long long类型,int也行)
int main()
{
long long n,x=1,y;//这里可以用int
cin>>n;//输入n
n=2*n-1;//根据题目要求,求出n=2*n-1(如果不先给n赋一个新值那么后面的for就不能进行)
//因为后面用的n都是2*n-1,所以输入完事就赋一个新值
for(int i=1;i<=n;i++)//将a数组清零,而且,把n重新赋值完的,否则这里面的n指的不是2*n-1
{
for(int j=1;j<=n;j++)
{
a[i][j]=0;//可以了,清零了
}
}
y=(n+1)/2;//给y赋值
a[x][y]=1;//根据题目要求,第一行的中间,一定是一
for(int i=2;i<=n*n;i++)//开始循环
{
if(x==1&&y==n){x++;}//判断如果在右上角(第一行最右面)
else//还有3种
{
if(x==1){x=n;y++;}//判断如果在第一行
else//还有2种
{
if(y==n){y=1;x--;}//判断如果在最后一行
else//最后一种
{
if(a[x-1][y+1]>0){x++;}//其他情况?还有呢
else{x--;y++;}
}
}
}
a[x][y]=i;//最后应该=i
}
for(int i=1;i<=n;i++)//双重循环输出
{
for(int j=1;j<=n;j++)//因为不是每个数占一行,所以不换行
{
cout<<a[i][j]<<" ";//输出并空格
}
cout<<endl;//每一行一定要换行
}
return 0;//结束
}