import java.util.*; public class Main {

public static void main(String[] args) { 
	Scanner src = new Scanner(System.in);
	int num = src.nextInt();
	printlnByte(num);
}

public static void printlnByte(int num) {
	int shortNum = num;
	int firstNum = 1;
	int chaNum =1;
	/**
	 * 1 3 6 10
	 * 2 5 9
	 * 4 8
	 * 7
	 */
	//我们可以按照行来计算 按照你提示都是从 1 开始  当输入4 的时候意味着 
	//第一行有四个数  每次减一,减到一为止
	/**
	 * 按行时,依次是 +2  +3  +4
	 * 				+3	+4
	 * 				+4
	 * 
	 * 按照列的时候 +1
	 * 	           +2
	 * 			   +3		
	 */
	for(int i=1; i<=num; i++) { //这个地方是答应每行  一共四行
		int x = firstNum;  //获取头值   
		//每次的加数//比如 第一行的加数 +2  +3  +4  
		int xCount = i+1;    
		
		for(int j = 1;j<=shortNum;j++) {
			//这个部分单独写一块用来处理
			/**
			 * firstNum =1;  short 这次为4   j 为1  2  3  4
			 * 							3		1  2  3
			 * 							2		1  2
			 * 							1		1
			 */
			System.out.print(x+" ");
			x += xCount++;  // 保证每次加的值  这两步 太重要了
			
		}
		System.out.println();
		//减1 保证第一行4个数  ; 第二行三个数 ;第三行两数;第四行 一个数
		shortNum--;
		firstNum += chaNum++;  //这样就是每次的开头的值
		
	}
	
	
}

}