#include <stdio.h>
int main()
{
int n=0,count=2,row=0,col=0,time=0;
int arr[1000][1000]={0};
scanf("%d",&n);
arr[0][0]=1;
while(count<=n*n)
{
if(col<n-1)//在行小于n之前列加一(1->2,6->7)
{
col++;
time++;//在小于n之前,斜线走的次数递增。
} //大于n后向下走,行加一 (13->14)
else
{
row++;
time--;//在大于n后,斜线的次数递减。
}
arr[row][col]=count++;
for(int i=0;i<time;i++)//斜下走
{
row++;
col--;
arr[row][col]=count++;
}
if(row<n-1)//原理同上。
{
time++;
row++;
}
else
{
time--;
col++;
}
arr[row][col]=count++;
for(int i=0;i<time;i++)//斜上走
{
row--;
col++;
arr[row][col]=count++;
}
}
for(int i=0;i<n;i++)//打印
{
for(int j=0;j<n;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}