# 1 3 6 10 15
#   2 5  9 14
#     4  8 13
#        7 12
#          11
# 构造成上述这样的,最终打印时候只要前面空的不打印即可。
# 第一行,从第1列到第j列(j < n + 1)
# f(1,2)-f(1,1)=2
# f(1,3)-f(1,2)=3
# f(1,4)-f(1,3)=4
# f(1,5)-f(1,4)=5
# ....
# f(1,j)-f(1,j-1)=j
# 可推导:
# f(1,j)-f(1,1)=j+(j-1)+(j-2)+......+3+2
# f(1,j)=(j+2)*(j-1)//2+1
# f(i,j)=(j+2)*(j-1)//2+1-(i-1)

# i--->lines
# j--->cols
def f(i, j):
    return (j + 2) * (j - 1) // 2 + 1 - (i - 1)


n: int = int(input())
# 第i 行 第j 列数字: (j + 2) * (j - 1) // 2 + 1 - (i - 1)
for i in range(1, n + 1, 1):
    for j in range(i, n + 1, 1):
        print(f(i, j), end=" ")
    print("")