#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
using namespace std;

int board[25][25];

int res[25][25];

int n;

void calc(int i, int j, int a, int b, int turn)
{
    if(i<1 || i>n) return;
    if(j<1 || j>n) return;
    if(board[i][j]!=-1 && board[i][j]<=turn) return;
    //std::cout << "try " << i << " " << j << " val " << board[i][j] << endl;
    //std::cout << "    " << a << " " << b << endl;
    board[i][j]=turn;
    
    int ni,nj;


    ni=i+a;nj=j-b;
    calc(ni,nj,a,b,turn+1);
    ni=i+a;nj=j+b;
    calc(ni,nj,a,b,turn+1);

    ni=i-a;nj=j-b;
    calc(ni,nj,a,b,turn+1);
    ni=i-a;nj=j+b;
    calc(ni,nj,a,b,turn+1);

    if(a==b) return;

    ni=i+b;nj=j-a;
    calc(ni,nj,a,b,turn+1);
    ni=i+b;nj=j+a;
    calc(ni,nj,a,b,turn+1);

    ni=i-b;nj=j-a;
    calc(ni,nj,a,b,turn+1);
    ni=i-b;nj=j+a;
    calc(ni,nj,a,b,turn+1);

    
}

void reset()
{
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
           board[i][j]=-1;
        }
    }
}

int main() {
    std::cin >> n;
    
    for(int i=1;i<n;i++)
    {
        for(int j=i;j<n;j++)
        {
            reset();
            calc(1,1,i,j,0);
            res[i][j]=board[n][n];
        }
    }
    for(int i=1;i<n;i++)
    {
        for(int j=1;j<n;j++)
        {
            if(j<i) std::cout << res[j][i] << " ";
            else std::cout << res[i][j] << " ";
        }
        std::cout << endl;
    }
    return 0;
}