#include <stdio.h>
int main() {
unsigned int N = 0;
unsigned int result[100][100] = {};
unsigned int i,row,column;
scanf("%u", &N);
// 生成二维蛇形数组
for (row=0; row<N; ++row) {
for (column=0; column<N-row; ++column) {
if (column==0) { // 第一列先算出来
if (row==0) { // result[0][0]肯定为1
result[row][column] = 1;
} else { // 其他的行首值 = 上一行的行首值 + 当前行号
result[row][column] = result[row-1][column] + row;
}
} else { // 其他的行列值 = 当前行上一列的值 + 当前行号 + 当前列号 + 1
result[row][column] = result[row][column-1] + row + column + 1;
}
}
}
// 按格式打印
for (row=0; row<N; ++row) {
for (column=0; column<N-row; ++column) {
printf("%u", result[row][column]);
if (column != N-row-1) {
printf(" ");
} else {}
}
printf("\n");
}
return 0;
}