n = int(input())

def generate_triangle(n):
    triangular = []
    for i in range(n):
        # 生成n行均为1的矩阵
        row = [1] * (i+1)
        for j in range(1,i):
            # 从1开始,对每一行的第二个数进行求值
            row[j] = triangular[i-1][j]+triangular[i-1][j-1]
        # 当i为0和1的时候,不会进行最近这个for运行,之间保存前两列的矩阵数据
        triangular.append(row)
    return triangular

triangular = generate_triangle(n)

# 按照每行打印杨辉三角
for row in triangular:
    print(" ".join(map(str, row)))