/*
思路: 
    1. 创建一个N行 N列的数组, 并初始化为0  vector<vector<int>> matrix(0, vector<int>(N, 0))
    2. 使用变量,控制遍历矩阵的路径为蛇形路径。 这个需要重点关注。  
    3. 遍历矩阵,打印数据
*/
#include<iostream>
#include <vector>

using namespace std;

int main(){
    int n;
    cin >> n;
    int num = 1;
    // 二维数组
    vector<vector<int>> matrix(n, vector(n, 0));
    for(int i = 0; i < n; i++){
        int j = i;
        int k = 0;
        while(j >= 0){
            matrix[j][k] = num;
            num++;
            j--;
            k++;
        }
    }

    // 打印输出 蛇形矩阵
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            if(matrix[i][j] != 0){
                cout << matrix[i][j] << " ";
            }
        }
        cout << endl;

    }

    return 0;
}