#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 找规律:随着n的增加,蛇形矩阵中的元素也在增加
// n = 1, 填充a[0][0]
// n = 2, 填充a[1][0], a[0][1]
// n = 3, 填充a[2][0], a[1][1], a[0][2]
// n = 4, 填充a[3][0], a[2][1], a[1][2], a[0][3]
// 数组a[101][101]存放蛇形矩阵
int a[101][101];
// 计算函数
void cal_func(int n) {
int num = 1; // 蛇形矩阵递增值
for (int i = 1; i <= n; i++) // 第i行(i从1开始)
{
for (int j = i - 1; j >= 0; j--) {
a[j][i-j-1] = num;
num++;
}
}
}
// 打印函数
void print_func(int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i; j++)
{
if (j == n - i - 1) {
printf ("%d\n", a[i][j]);
} else {
printf ("%d ", a[i][j]);
}
}
}
}
int main () {
int n;
while (cin >> n) {
cal_func(n);
print_func(n);
}
return 0;
}