#include <map> #include <set> #include <list> #include <cmath> #include <ctime> #include <deque> #include <queue> #include <stack> #include <string> #include <bitset> #include <cstdio> #include <limits> #include <vector> #include <climits> #include <cstring> #include <cstdlib> #include <fstream> #include <numeric> #include <sstream> #include <iostream> #include <algorithm> #include <unordered_map> using namespace std; int main(){ int n; cin >> n; // your code goes here for (int i = 1; i < n; i++) { for (int j = 1; j < n; j++) { int dist[26][26]; memset(dist, -1, sizeof(dist)); int q[26 * 26], sz = 0; q[sz++] = 0; dist[0][0] = 0; for (int s = 0; s < sz; s++) { int r = q[s] / n, c = q[s] % n; for (int a = -1; a < 2; a += 2) { for (int b = -1; b < 2; b += 2) { int nr = r + a * i; int nc = c + b * j; if (nr < 0 || nr >= n || nc < 0 || nc >= n || dist[nr][nc] != -1) { continue; } dist[nr][nc] = dist[r][c] + 1; q[sz++] = nr * n + nc; } } for (int a = -1; a < 2; a += 2) { for (int b = -1; b < 2; b += 2) { int nr = r + a * j; int nc = c + b * i; if (nr < 0 || nr >= n || nc < 0 || nc >= n || dist[nr][nc] != -1) { continue; } dist[nr][nc] = dist[r][c] + 1; q[sz++] = nr * n + nc; } } } cout << dist[n - 1][n - 1] << " "; } cout << endl; } return 0; }