# 观察题目,每一行都是差成等差数列。
# 差成等差数列通项公式:
# a2 - a1 = p
# a3 - a2 = p + q
# a4 - a3 = p + 2q
# ...
# an - an-1 = p + (n - 2)q

# 等式左右相加:
# an - a1 = (n - 1)p + [1 + 2 + ... + (n -2)]q
#         = (n - 1)p + [(n - 1)(n - 2)/2]q
# an = (n - 1)p + [(n - 1)(n - 2)/2]q + a1
# 本题中每行为差成等差数列, p=(i+1), q=1,所以每行元素可以表示为(第一列元素定义bn)
# 2(n-1)+(n-1)(n-2)/2+bn 
# 又每列为差成等差数列, b1=1, p=1, q=1,所以bn可以表示为
# n+(n-1)(n-2)/2
# 所以每行元素可以表示为: 2(n-1)+(n-1)(n-2)/2+n+(n-1)(n-2)/2
while True:
    try:
        m = int(input())
        for i in range(1, m + 1):  # i表示第几列
            for j in range(1, m - i + 2):  # j表示每列第几个元素, 第i列元素个数为m-i+1个
                print(2 * (j - 1) + i + ((j - 1) * (j - 2) + (i - 1) * (i - 2)) // 2, end=' ')
            print()  # 每行完成后换行
    except:
        break