#include using namespace std; const int BIG = 2e9; int n, d[50][50]; void can(queue> &q, int i, int j, int dd){ if(i >= 0 && i < n && j >= 0 && j < n && d[i][j] > dd){ d[i][j] = dd; q.push({i, j}); } } int bfs(int n, int a, int b){ for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ d[i][j] = BIG; } } d[0][0] = 0; queue> q; q.push({0, 0}); while(!q.empty()){ pair v = q.front(); q.pop(); int x = v.first; int y = v.second; int dist = d[x][y] + 1; can(q, x + a, y + b, dist); can(q, x + a, y - b, dist); can(q, x - a, y + b, dist); can(q, x - a, y - b, dist); can(q, x + b, y + a, dist); can(q, x + b, y - a, dist); can(q, x - b, y + a, dist); can(q, x - b, y - a, dist); } int ans = d[n - 1][n - 1]; if(ans == BIG){ return -1; } return ans; } int main(){ cin >> n; for(int i = 1; i < n; i++){ for(int j = 1; j < n; j++){ cout << bfs(n, i, j) << " "; } cout << "\n"; } }