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(' '));
    }

}()