#include <stdio.h>
#include <string.h>
int s[30][30];
int main()
{
int i,j;
int n,m,k;
while(scanf("%d",&n)!=EOF)
{
int l=0,f=0;
k=0;
m=1;
memset(s,0,sizeof(s));
while(k<=n) //k=0,1,2....n
{
l=f=k;
for(i=k;i<n;i++) // i 代表行填充
{
if(s[l][i]==0)
s[l][i]=m++;
}
for(j=k;j<n;j++) // j 代表列填充
{
if(s[j][f]==0)
s[j][f]=m++;
}
k++; // k自加
}
for(i=0;i<n;i++) //输出
{
for(j=0;j<n;j++)
{
if(j==(n-1))
printf("%d",s[i][j]);
else
printf("%d ",s[i][j]);
}
printf("\n");
}
}
return 0;
}
#include <string.h>
int s[30][30];
int main()
{
int i,j;
int n,m,k;
while(scanf("%d",&n)!=EOF)
{
int l=0,f=0;
k=0;
m=1;
memset(s,0,sizeof(s));
while(k<=n) //k=0,1,2....n
{
l=f=k;
for(i=k;i<n;i++) // i 代表行填充
{
if(s[l][i]==0)
s[l][i]=m++;
}
for(j=k;j<n;j++) // j 代表列填充
{
if(s[j][f]==0)
s[j][f]=m++;
}
k++; // k自加
}
for(i=0;i<n;i++) //输出
{
for(j=0;j<n;j++)
{
if(j==(n-1))
printf("%d",s[i][j]);
else
printf("%d ",s[i][j]);
}
printf("\n");
}
}
return 0;
}