#include <iostream>
#include <iomanip> // 使用 setw 控制输出宽度
using namespace std;

int main() {
    int n;
    cin >> n; // 输入 n

    int arr[n][n]; // 定义 n 行 n 列数组
    arr = 1; // 初始化第一个元素

    // 根据规律填充数组
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (i == 0 && j > 0) {
                // 第一行,除了第一个元素,其余元素等于左侧元素加4
                arr[i][j] = arr[i][j-1] + 4;
            } else if (i > 0 && j == 0) {
                // 第一列,除了第一个元素,其余元素等于上方元素加1
                arr[i][j] = arr[i-1][j] + 1;
            } else if (i > 0 && j > 0) {
                // 其余元素等于左侧元素加4,上方元素加1,取两者中的较大值
                arr[i][j] = max(arr[i-1][j] + 1, arr[i][j-1] + 4);
            }
        }
    }

    // 输出结果并控制每项长度为 5 字符
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cout << setw(5) << arr[i][j]; // 设置输出宽度为 5
        }
        cout << endl;
    }

    return 0;
}
/**************************************************************
	Problem: 1418
	User: zhenghaoxuan
	Language: C++
	Result: Compile Error
****************************************************************/