/* Author : Jordhy Fernando */ #include #define ll long long #define For(i,j,n) for(int i = j; i < n; i++) #define EPS 1e-12 using namespace std; typedef vector vi; typedef pair ii; typedef vector vii; #include #include #include using namespace std; int main(){ int n; int d[26][26], memo[26][26]; cin >> n; for(int i = 0; i < 26; i++){ for(int j = 0; j < 26; j++){ memo[i][j] = -2; } } for(int i = 1; i < n; i++){ for(int j = 1; j < n; j++){ if(j > 1){ cout << " "; } if(memo[i][j] != -2 || memo[j][i] != -2){ cout << memo[i][j]; } else{ for(int k = 0; k < n; k++){ for(int l = 0; l < n; l++){ d[k][l] = -1; } } queue q1, q2; d[0][0] = 0; q1.push(0); q2.push(0); while(!q1.empty()){ int nowx, nowy; nowx = q1.front(); nowy = q2.front(); q1.pop(); q2.pop(); if(nowx - i >= 0 && nowy - j >= 0){ if(d[nowx - i][nowy - j] == -1){ d[nowx - i][nowy - j] = d[nowx][nowy] + 1; q1.push(nowx - i); q2.push(nowy - j); } } if(nowx - j >= 0 && nowy - i >= 0){ if(d[nowx - j][nowy - i] == -1){ d[nowx - j][nowy - i] = d[nowx][nowy] + 1; q1.push(nowx - j); q2.push(nowy - i); } } if(nowx + i < n && nowy + j < n){ if(d[nowx + i][nowy + j] == -1){ d[nowx + i][nowy + j] = d[nowx][nowy] + 1; q1.push(nowx + i); q2.push(nowy + j); } } if(nowx + j < n && nowy + i < n){ if(d[nowx + j][nowy + i] == -1){ d[nowx + j][nowy + i] = d[nowx][nowy] + 1; q1.push(nowx + j); q2.push(nowy + i); } } if(nowx + i < n && nowy - j >= 0){ if(d[nowx + i][nowy - j] == -1){ d[nowx + i][nowy - j] = d[nowx][nowy] + 1; q1.push(nowx + i); q2.push(nowy - j); } } if(nowx + j < n && nowy - i >= 0 ){ if(d[nowx + j][nowy - i] == -1){ d[nowx + j][nowy - i] = d[nowx][nowy] + 1; q1.push(nowx + j); q2.push(nowy - i); } } if(nowx - i >= 0 && nowy + j < n){ if(d[nowx - i][nowy + j] == -1){ d[nowx - i][nowy + j] = d[nowx][nowy] + 1; q1.push(nowx - i); q2.push(nowy + j); } } if(nowx - j >= 0 && nowy + i < n){ if(d[nowx - j][nowy + i] == -1){ d[nowx - j][nowy + i] = d[nowx][nowy] + 1; q1.push(nowx - j); q2.push(nowy + i); } } } cout << d[n - 1][n - 1]; memo[i][j] = memo[j][i] = d[n - 1][n - 1]; } } cout << endl; } return 0; }