#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n;
cin >> n;
int matrix[100][100] = {0};
// 填充右上到左下对角线元素
for (int i = 0; i < n; i++) {
matrix[i][n-1-i] = n - i;
}
// 填充对角线右下方的元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i + j >= n - 1 && j < n - 1 - i) {
int left = (j > 0) ? matrix[i][j-1] : 0;
int up = (i > 0) ? matrix[i-1][j] : 0;
matrix[i][j] = left + up;
}
}
}
// 输出方阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (matrix[i][j] == 0) {
cout << setw(5) << " ";
} else {
cout << setw(5) << matrix[i][j];
}
}
cout << endl;
}
return 0;
}
/**************************************************************
Problem: 1207
User: fuyijun
Language: C++
Result: Wrong Answer
****************************************************************/