#include <bits/stdc++.h> using namespace std; int vis[27][27]; int x1[4] = {1,1,-1,-1}; int yl[4] = {1,-1,1,-1}; bool isvalid(int x,int y,int n){ if(x >= 0 && y >= 0 && x<n && y <n){ return true; } else return false; } int bfs(int a,int b,int n){ // cout << "Go " << a << " " << b << endl; queue<pair<int,pair<int,int> > > q; q.push(make_pair(0,make_pair(0,0))); vis[0][0] = 1; while(!q.empty()){ int lev = q.front().first; int x = q.front().second.first; int y = q.front().second.second; q.pop(); for(int i=0;i<4;i++){ int x2 = x + x1[i]*a; int y2 = y + yl[i]*b; if(x2 == n-1 && y2 == n-1){ //cout << n << endl; return lev+1;} if(isvalid(x2,y2,n)){ if(!vis[x2][y2]){ vis[x2][y2] = 1; // cout << x2 << " " << y2 << endl; q.push(make_pair(lev+1,make_pair(x2,y2))); } } x2 = x + x1[i]*b; y2 = y + yl[i]*a; if(x2 == n-1 && y2 == n-1){ //cout << n << endl; return lev+1;} if(isvalid(x2,y2,n)){ if(!vis[x2][y2]){ vis[x2][y2] = 1; // cout << x2 << " " << y2 << endl; q.push(make_pair(lev+1,make_pair(x2,y2))); } } // cout << "-1" << endl; } } return -1; } int main(){ int n; cin >> n; // your code goes here for(int i=1;i<n;i++){ for(int j = 1;j<n;j++){ memset(vis,0,sizeof(vis)); int ans = bfs(i,j,n); cout << ans << " "; //return 0; } cout << endl; } return 0; }