#include<bits/stdc++.h>
using namespace std;
bool visit[100][100];
int cost[100][100];
int n,a,b;
void initialize(){
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++){
			visit[i][j]=false;
			cost[i][j]=-1;
		}
}
bool test(int x,int y,int dx,int dy){
	if(x+dx<n&&x+dx>=0)
		if(y+dy<n&&y+dy>=0)
			return true;
	return false;
}
void rec(int x,int y,int curr){
	if(x==n-1&&y==n-1){
		if(visit[x][y]){
			cost[x][y]=min(cost[x][y],curr);
		}
		else
			cost[x][y]=curr;
	}
	if(visit[x][y])
		return;
	visit[x][y]=true;
	if(cost[x][y]==-1)
		cost[x][y]=curr;
	if(test(x,y,a,b)){
		rec(x+a,y+b,curr+1);
	}
	if(test(x,y,-a,b)){
		rec(x-a,y+b,curr+1);
	}	
	if(test(x,y,-a,-b)){
		rec(x-a,y-b,curr+1);
	}
	if(test(x,y,a,-b)){
		rec(x+a,y-b,curr+1);
	}
	if(test(x,y,b,a)){
		rec(x+b,y+a,curr+1);
	}
	if(test(x,y,-b,a)){
		rec(x-b,y+a,curr+1);
	}	
	if(test(x,y,-b,-a)){
		rec(x-b,y-a,curr+1);
	}
	if(test(x,y,b,-a)){
		rec(x+b,y-a,curr+1);
	}
}
int main(){
	cin >> n;
	for(int i=1;i<n;i++)
	{
		for(int j=1;j<n;j++)
		{
			a=i,b=j;
			initialize();
			rec(0,0,0);
			cout << cost[n-1][n-1]<<' ';
		}
		cout << endl;
	}	
	return 0;
}