#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; }