#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);  // 读取输入的行数n
    for (int i = 0; i < n; i++) {  // 遍历每一行(i为行号,从0开始)
        long long int num = 1;  // 每行第一个元素固定为1(C(i,0)=1)
        for (int j = 0; j <= i; j++) {  // 遍历当前行的每个元素(j为列号)
            printf("%lld", num);  // 输出当前元素
            // 组合数递推:C(i,j+1) = C(i,j) * (i-j) / (j+1)
            num = num * (i - j) / (j + 1);
            if (j != i) printf(" ");  // 非行末元素后加空格(避免行尾多余空格)
        }
        printf("\n");  // 换行
    }
    return 0;
}