#include <iostream>
#include <iomanip>  // 用于设置输出宽度

using namespace std;

int main() {
    int n;
    cin >> n;  // 读取输入的整数N
    
    /*for (int i = 1; i <= n; ++i) {  // 遍历每一行(行号从1到n)
        for (int j = 1; j <= n; ++j) {  // 遍历每一列(列号从1到n)
            // 计算当前位置的元素值:行号i和列号j的较小值,再逆序输出
            int val = i < j ? i : j;
            val = n - val + 1;  // 逆序处理
            cout << setw(3) << val;  // 场宽设为3,不足时左侧补空格
        }
        cout << endl;  // 每行结束后换行
    }*/
    
    
    for (int i = 1; i <= n; ++i) {  // 遍历每一行(行号从1到n)
	    for (int j = 1; j <= n; ++j) {  // 遍历每一列(列号从1到n)
	        // 计算当前位置的元素值:行号i和列号j的较小值,再逆序输出
	        int val = i < j ? i : j;
	        val = n - val + 1 ;
	        cout << setw(3) << val;  // 场宽设为3,不足时左侧补空格
	    }
        cout << endl;  // 每行结束后换行
    }
    
    return 0;
}
/**************************************************************
	Problem: 1198
	User: 231308061
	Language: C++
	Result: Accepted
	Time:15 ms
	Memory:2072 kb
****************************************************************/