#include<iostream>
#include<cstring>
#include<cstdio>using namespace std;
int main()
{
int n;
while(cin>>n)
{
int a[n][n];
memset(a,0,sizeof(a));/*将数组a清零,此函数包含于#include<cstring>头文件中,这个函数不加结果也是对的,在这里只是为了练习memset的用法,不过刘汝佳 写的蛇形矩阵里,用到了这个函数,其中的道理,目前还没有理解。*/
int down=n-1,up=0,left=0,right=n-1;int flag=1;
int i=1;
while(i<=n*n)
{
if(flag==1)//向下移动
{
for(int j=up;j<=down;j++)
a[j][right]=i++;
right--;
flag++;
}
else
if(flag==2)//向左移动
{
for(int j=right;j>=left;j--)
a[down][j]=i++;
down--;
flag++;
}
else
if(flag==3)//向上移动
{
for(int j=down;j>=up;j--)
a[j][left]=i++;
left++;
flag++;
}
else
if(flag==4)//向右移动
{
for(int j=left;j<=right;j++)
a[up][j]=i++;
up++;
flag=1;
}
}
for(int k=0;k<n;k++)
{
for(int m=0;m<n;m++)
printf("%3d ",a[k][m]);
cout<<endl;
}
}
return 0;
}