#include #include #include #include #include using namespace std; int n; inline bool check(int a, int b) { if (a < 0 || a >= n) return false; if (b < 0 || b >= n) return false; return true; } inline int ncount(int a, int b) { vector > d(n, vector (n, 1e9)); set > > s; d[0][0] = 0; s.insert({0, {0, 0}}); while (!s.empty()) { auto it = (*s.begin()); s.erase(s.begin()); int step = it.first, x = it.second.first, y = it.second.second; int ff[8] = {a, a, -a, -a, b, b, -b, -b}; int ss[8] = {b, -b, b, -b, a, -a, a, -a}; for (int i = 0; i < 8; i++) { if (check(x + ff[i], y + ss[i])) { if (d[x + ff[i]][y + ss[i]] == 1e9) { d[x + ff[i]][y + ss[i]] = step + 1; s.insert({step + 1, {x + ff[i], y + ss[i]}}); } } } } if (d[n - 1][n - 1] == 1e9) return -1; return d[n - 1][n - 1]; } int main() { cin >> n; for (int i = 1; i < n; i++) { for (int j = 1; j < n; j++) { cout << ncount(i, j) << ' '; } cout << '\n'; } return 0; }