const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
let n = parseInt(await readline());
let a = []
for(let i=0; i<n; i++){
a[i] = [];
}
// 初始化第一行
a[0][0]=1;
for(k=2;k<=n;k++){
a[0].push(a[0][k-2]+k);
}
// 开始跑剩余行,每一个数字等于它右上角 -1
for(let i=1;i<n;i++){
for(let j=0; j<n-i; j++){ // 每一行有效列数都会变,所以限定条件是j<n-i,不是j<n
a[i][j] = a[i-1][j+1]-1;
}
}
for(let i=0; i<n; i++){
console.log(a[i].join(' '));
}
}()