#include<stdio.h>
int main()
{
long long a[40][70];//二维矩阵用来存放数据
int i,j,n;
for(i=0;i<70;i++)//设定第一行的初始值
{
a[0][i]=0;
if(i==35||i==37)
a[0][i]=1;
}
for(i=0;i<39;i++)//退出后面的数据
for(j=0;j<68;j++)
a[i+1][j+1]=a[i][j]+a[i][j+2];
while(scanf("%d",&n)!=EOF)
{
putchar('1');//输出第一行
putchar('\n');
for(i=0;i<n-1;i++)//控制输出杨辉三角
{
int flag=0,num=0;
for(j=0;j<70;j++)
{
if(a[i][j]==1&&!flag)
flag=1;
if(a[i][j]==1)
num++;
if(!flag||num==2)
continue;
if(a[i][j]==0)
putchar(' ');
else
printf("%lld",a[i][j]);
}
putchar('1');//补末尾的0
putchar('\n');
}
putchar('\n');//每一组数据后面有回车
}
return 0;
}