#纯纯找规律
#1、蛇形矩阵第一行输出元素个数即为输入的数字
#2、第一行的递增数目为2、3、4、5、、、、
#3、第一列的递增数目为1、2、3、4、、、、
#4、行数为输入数字
#5、由3可以计算出每一行第一个数字的通项公式为:An=1+(n-1)n/2,n为行数
#6、由2可知,每一行的起始步长为n+1,n为行数
#7、在每一行内部,步长都是递增1的

a=int(input())
for i in range(a):#行数
    front=1+(i+1)*i//2 #每一行的开头数字
    bc=2+i #每一行内部的步长,变化的
    temp=front#利用临时变量存储每次需要输出的元素
    print(temp,end=" ")
    for j in range(a-i-1):#列数 注意第一个元素在上面输出了,所以只需要输出a-i-1个元素即可
        temp=temp+bc#新的元素为上一个元素加上步长
        print(temp,end=" ")
        bc+=1#步长递增1
    print()