#include <iostream>
using namespace std;

int a[20004][20004]={0};//在主函数外定义数组,节省内存

int main() {
    int n{};//杨辉三角的前n行
    cin>>n;

    for(int i=0;i<n;i++)//矩阵的行数(其实就是数组里的位置)
    {
        for(int j=0;j<=i;j++)//矩阵的列数(注意这里是j<=i,否则会跳过第一行)
        {

            if(j==0)//每行第一个元素都是1
            {
                a[i][j]=1;
                cout<<a[i][j]<<" ";//开头需要空格
                
                if(j==i)//特殊处理第一行
                cout<<endl;
            }
            else if(j==i)//每行的末尾也是1
            {
                a[i][j]=1;
                cout<<a[i][j]<<endl;//末尾不需要空格,但需要换行
            }
            else if(j!=0)//中间元素的处理
            {
                a[i][j]=a[i-1][j]+a[i-1][j-1];
                cout<<a[i][j]<<" ";//中间需要空格
            }
            
        
        }
    }
}
// 64 位输出请用 printf("%lld")