#include<bits/stdc++.h>
#define pb push_back
#define ff first
#define ss second
#define mpa make_pair
using namespace std;
typedef long long LL;
bool valid(int x, int y, int N, int M) {
    if(x <= 0 || y <= 0 || x > N || y > M)
            return false;
    return true;
}

int bfs(pair<int, int> p1, pair<int, int> p2, pair<int, int> p3, int dx[], int dy[]) {

    int N = p3.ff;
    int M = p3.ss;
    queue<pair<pair<int, int>, int> > Que;
    map<pair<int, int>, bool> Vis;

    Que.push(mpa(p1, 0));

    while(!Que.empty()) {

        pair<pair<int, int>, int> temp = Que.front();
        Que.pop();

        if(temp.ff.ff == p2.ff && temp.ff.ss == p2.ss)
                return temp.ss;
        int x = temp.ff.ff;
        int y = temp.ff.ss;
        int dis = temp.ss + 1;


        if(Vis.count(mpa(x, y)))
            continue;
        Vis[mpa(x, y)] = true;

        for(int i = 0; i < 8; ++i) {

            int x1 = x + dx[i];
            int y1 = y + dy[i];
            if(valid(x1, y1, N, M))
            Que.push(mpa(mpa(x1, y1), dis));
        }

    }

    return -1;
}

int solve(int N, int M, int x1, int y1, int x2, int y2, int dx[], int dy[]) {

    pair<int, int> p1;
    p1.ff = x1;
    p1.ss = y1;

    pair<int, int> p2;
    p2.ff = x2;
    p2.ss = y2;

    pair<int, int> p3;
    p3.ff = N;
    p3.ss = M;

    int ans = bfs(p1, p2, p3, dx, dy);
    return ans;
}

int main() {
    int n;
    cin>>n;
    for(int i = 1; i<n; i++){
    	for(int j = 1; j<n; j++){
    		int dx[8] = {i, i, -i, -i, j, j, -j, -j};
    		int dy[8] = {-j, j, j, -j, i, -i, i, -i};
    		cout<<solve(n, n, 1, 1, n, n, dx, dy)<<" ";
    	}
    	cout<<endl;
    }
    return 0;
}

/*#include <bits/stdc++.h>
#define ll long long
#define mod 1000000007
using namespace std;
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n;
	cin>>n;
	for(int i = 1; i<n; i++){
		for(int j = 1; j<n; j++){
			int dp[n][n];
			memset(dp, -1, sizeof(dp));
			dp[0][0] = 0;
			for(int x = 0; x<n; x++){
				for(int y = 0; y<n; y++){
					dp[x][y] =
				}
			}
		}
	}
	return 0;
}
*/