import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
int[][] dp=new int[num][num];
int m=1;
/*
1、找规律:(1,0)=2,(0,1)=3;(2,0)=4,(1,1)=5,(0,2)=4;
2、定义i控制总的循环次数
3、定义k表示纵坐标,j表示横坐标
4、dp[k][j]赋值方式和传统方式有差异,传统方式是dp[横][纵],此处是dp[纵][横]
*/
for(int i=0;i<num;i++){
for(int j=0,k=i;k>=0;j++,k--){
dp[k][j]=m;
m++;
}
}
for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
if(dp[i][j] !=0){
System.out.print(dp[i][j]+" ");
}
}
//一行结束后换行
System.out.println();
}
}
}
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
int[][] dp=new int[num][num];
int m=1;
/*
1、找规律:(1,0)=2,(0,1)=3;(2,0)=4,(1,1)=5,(0,2)=4;
2、定义i控制总的循环次数
3、定义k表示纵坐标,j表示横坐标
4、dp[k][j]赋值方式和传统方式有差异,传统方式是dp[横][纵],此处是dp[纵][横]
*/
for(int i=0;i<num;i++){
for(int j=0,k=i;k>=0;j++,k--){
dp[k][j]=m;
m++;
}
}
for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
if(dp[i][j] !=0){
System.out.print(dp[i][j]+" ");
}
}
//一行结束后换行
System.out.println();
}
}
}