/*
ID: niepeng1
PROG: shuttle
LANG: C++
*/
/*
这个题目,看着简单,就是没有办法做。本来想广度搜索,可是太长了。
忍不住看了题解,原来是这样的呀。其实还是没有懂。
直到看了源程序才明白要这样编写。不过还是知道这样写,自己下次
绝对写着有问题,或者根本写不出来。这找规律也太复杂了。
*/
#include<stdio.h>
#include<memory.h>
#include<algorithm>
int n;
int main()
{
freopen("shuttle.in","r",stdin);
freopen("shuttle.out","w",stdout);
int i,j,k,blank,t;
scanf("%d",&n);
t=0;blank=n+1;k=-1;
for(i=0;i<n;i++){
for(j=0;j<i;j++){
//大致就是我有点晕,为什么呢?这就是规律
if(t%20==0) printf("%d",blank+2*k);
else printf(" %d",blank+2*k);
blank+=2*k;
t++;
if(t%20==0) printf("/n");
}
if(t%20==0) printf("%d",blank+k);
else printf(" %d",blank+k);
blank+=k;
t++;
if(t%20==0) printf("/n");
k=-k;
}
for(i=0;i<n;i++){
if(t%20==0) printf("%d",blank+2*k);
else printf(" %d",blank+2*k);
blank+=2*k;
t++;
if(t%20==0) printf("/n");
}
k=-k;
for(i=n-1;i>=0;i--){
if(t%20==0) printf("%d",blank+k);
else printf(" %d",blank+k);
blank+=k;
t++;
if(t%20==0) printf("/n");
for(j=0;j<i;j++){
if(t%20==0) printf("%d",blank+2*k);
else printf(" %d",blank+2*k);
blank+=2*k;
t++;
if(t%20==0) printf("/n");
}
k=-k;
}
if(t%20) printf("/n");
return 0;
}