import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
            int size = scan.nextInt();
            for(int i=0;i<size;i++){
                solution(i,size);
            }
        }
        
    }
    public static void solution(int n,int size){
        //输出每一行的方法/
        int first = getTheFirst(n);//第一个数
        int len = getLineLength(n,size);//得到了应该输出的长度
        int dif = getDif(n);
        for(int i=0;i<len;i++){
            //开始输出
            System.out.print(first+" ");
            first +=(dif++);
        }
        System.out.println();//每次输出一梭子就换行
    }
    public static int getLineLength(int lineNumber,int size){
        return size - lineNumber;//得到了每一行有多少个数
    }
    public static int getTheFirst(int lineNumber){
        
        int res = 1;
        if(lineNumber==0) return res;
        for(int i=0;i<=lineNumber;i++){
            res+=i;
        }
        return res;//得到了每一行的第一位数字 从0开始数的行数
    }
    public static int getDif(int n){
        //得知每一行的第一个元素跨步多少
        return n+2;
    }
}