#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define sci(fd) scanf("%d",&fd)
#define scll(fd) scanf("%lld",&fd)
#define pb push_back
#define mp make_pair
#define MOD 1000000007
#define PI 3.1415926535897932
#define pii pair < int,int > 
#define pll pair < ll,ll >
#define fi first
#define se second
#define LOGN 20
const ll infi=1000000000000000009;
int vis[30][30],n;
int ar[4][2]={1,1,-1,-1,1,-1,-1,1};
bool check(int x,int y)
{
    return (x>=1&&x<=n&&y>=1&&y<=n);
}
int doit(int a,int b)
{
    int i,j;
    queue <  pair < pii ,int> >  q;
    q.push(mp(mp(1,1),0));
    vis[1][1]=1;
    int ans=-1;
    while(!q.empty())
    {
        int x=q.front().fi.fi;
        int y=q.front().fi.se;
        int z=q.front().se;
        q.pop();
        for(i=0;i<4;i++)
        {
            int na=x+a*ar[i][0];
            int nb=y+b*ar[i][1];
            if(check(na,nb)&&vis[na][nb]==0)
            {
                if(na==n&&nb==n&&ans==-1)
                ans=z+1;
                vis[na][nb]=1;
                q.push(mp(mp(na,nb),z+1));
            }
            if(check(nb,na)&&vis[nb][na]==0)
            {
                if(na==n&&nb==n&&ans==-1)
                ans=z+1;
                vis[nb][na]=1;
                q.push(mp(mp(nb,na),z+1));
            }
        }
    }
    return ans;
}
int main()
{
    int i,j;
    sci(n);
    for(i=1;i<n;i++)
    {
        for(j=1;j<n;j++)
        {
            memset(vis,0,sizeof(vis));
            printf("%d ",doit(i,j));
        }
        printf("\n");
    }
    return 0;
}