#include<stdio.h>
int main()
{
int a[10][10];
int dx[]={1,0,-1,0};
int dy[]={0,-1,0,1};
int value=1;
int i,j,n,x,y;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0;
//初始位置为(1,n),初始值为1
x=1;
y=n;
i=0;
a[x][y]=value++;
//循环结束的条件为n*n个值已经赋完
while(value<=n*n)
{
//按照当前的方向进行探测
x+=dx[i];
y+=dy[i];
//如果符合条件,赋值
if(x>=1 && x<=n && y>=1 && y<=n && a[x][y]==0)
a[x][y]=value++;
//如果不符合条件,把坐标退回,方向进行逆时针旋转
else
{
x-=dx[i];
y-=dy[i];
i=(i+1)%4;
}
printf("\nvalue=%d\n",value);
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}