#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;
}