#include <bits/stdc++.h>
using namespace std;
int main()
{
int n=0;
int arr[401]={0};
int ans[21][21]={0};
cin>>n;
// 生成数组
for(int i=1; i<=n*n; i++)
{
arr[i]=i;
}
// num为每一轮的数字量
int num = n-1;
int j=1, k=1;
int i=1;
// 开始循环导入
while(i<=n*n)
{
if(num>=0)
{
// 每一轮中的向下
for(int m = 1; m<=num; m++)
{
ans[j][k]=arr[i];
j++;
i++;
}
// 每一轮中的向右
for(int m = 1; m<=num; m++)
{
ans[j][k]=arr[i];
k++;
i++;
}
// 每一轮中的向上
for(int m = 1; m<=num; m++)
{
ans[j][k]=arr[i];
j--;
i++;
}
// 每一轮中的向左
// 左之后会重新从向下开始 后面存在一次为改变方向做准备的过程
for(int m = 1; m<num; m++)
{
ans[j][k]=arr[i];
k--;
i++;
}
// 为改变方向做准备
ans[j][k]=arr[i];
j++;
i++;
//下一次循环的开头
num=num-2;
}
else break;
}
// 方阵输出
for(int q = 1; q<=n; q++)
{
for(int r = 1; r<=n; r++)
{
// 输出格式需要注意 %-4d 输出往后四个字符
printf("%-4d", ans[q][r]);
}
printf("\n");
}
return 0;
}