#include <stdio.h>
int main() {
int n;
scanf("%d",&n);
int arr[n][n];
int i=0,j=0;
int p=1;
arr[i][j]=p++;
int flag=1;
//等于1向右上角移动,等于-1向左下角移动
while(p<=n*n){
if(i==0&&j<n-1&&flag==1){//上边界
arr[i][++j]=p++;
flag=-1;
}
else if(j==0&&i<n-1&&flag==-1){//左边界
arr[++i][j]=p++;
flag=1;
}
else if(j==n-1&&flag==1){//右边界
arr[++i][j]=p++;
flag=-1;
}
else if(i==n-1&&flag==-1){//下边界
arr[i][++j]=p++;
flag=1;
}
else if(flag==1){
arr[--i][++j]=p++;
}
else{
arr[++i][--j]=p++;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}