#include<bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    int** Array = new int* [n]; // 创建指向指针的指针
    //对比一维数组 int *Array = new int[n];

    for (int i = 0; i < n; i++) {
        Array[i] = new int[n]; // 为每行创建动态数组
    }
// 使用二维动态数组 + 访问二维动态数组
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            Array[i][j] = i + j; // 赋值

            cout << Array[i][j] << ' ';
        }
        cout << endl;
    }
// 释放二维动态数组的内存
    for (int i = 0; i < n; i++) {
        delete[]Array[i];// 释放每行的动态数组
    }
    delete[]Array;// 释放指向指针的指针


    return 0;
}