#include<stdio.h>
int main()
{
    int n =0;
    scanf("%d",&n);
    int arr[31][31]={0};        //定义一个二维数组同时初始化为零
    arr[1][1]=1;                //赋第一个值
    for(int i = 2;i<n+1;++i)    //从原数组第三行第二列开始循环赋值,因为顶上一行为零,所以多循环一行一列
    {
        for(int j = 1;j<n+1;++j)    
        {
            arr[i][j]=arr[i-1][j-1]+arr[i-1][j];        //等于左上加上方的和
            if(arr[i][j]==0) break;
        }
    }
    for(int i = 1;i<n+1;++i)        //因为最外围是最开始初始化的零,所以不打印,同时多打印一行
    {
        for(int j = 1;j<n+1;++j)
        {
            if(arr[i][j]!=0)
                printf("%5d",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}