#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int f(int n , int a , int b , int x , int y, int **arr){ arr[x][y]=1; if(x==n-1 && y==n-1){ arr[x][y]=-2; return 0; } int i1=INT_MAX,i2=INT_MAX,i3=INT_MAX,i4=INT_MAX,i5=INT_MAX,i6=INT_MAX; if( (x+a)<=n-1 && (y+b)<=n-1 && arr[x+a][y+b]!=1){ i1 = f(n,a,b,x+a,y+b,arr); if(i1==-1){ i1=INT_MAX; } } if( (x-a)>=0 && (y+b)<=n-1 && arr[x-a][y+b]!=1){ i2 = f(n,a,b,x-a,y+b,arr); if(i2==-1){ i2=INT_MAX; } } if( (x+a)<=n-1 && (y-b)>=0 && arr[x+a][y-b]!=1){ i3 = f(n,a,b,x+a,y-b,arr); if(i3==-1){ i3=INT_MAX; } } if( (x+b)<=n-1 && (y+a)<=n-1 && arr[x+b][y+a]!=1){ i4 = f(n,a,b,x+b,y+a,arr); if(i4==-1){ i4=INT_MAX; } } if( (x-b)>=0 && (y+a)<=n-1 && arr[x-b][y+a]!=1){ i5 = f(n,a,b,x-b,y+a,arr); if(i5==-1){ i5=INT_MAX; } } if( (x+b)<=n-1 && (y-a)>=0 && arr[x+b][y-a]!=1){ i6 = f(n,a,b,x+b,y-a,arr); if(i6==-1){ i6=INT_MAX; } } int ans = min(i1,min(i2,min(i3,min(i4,min(i5,i6))))); if(ans == INT_MAX){ return -1; } return ans+1; } int fhelper(int n , int a ,int b){ int **ans = new int*[n]; for(int i = 0; i < n; i++) { ans[i] = new int[n]; for(int j = 0; j < n; j++) { ans[i][j] = -2; } } return f(n,a,b,0,0,ans); } int main(){ int n; cin >> n; // your code goes here for(int a=1 ; a<= n-1 ; a++){ for(int b=1 ; b<=n-1 ; b++){ cout<