#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; int minMoves(int a,int b,int n){ if(a==n&&b==n) return 1; vector<int*> vec; int index = -1; for(int i=0;i*a<=n;++i){ int x = n-i*a; int y = x%b; int z = x/b; if(y==0&&((i^z)&1)==0){ vec.push_back(new int[2]); ++index; vec[index][0] = i; vec[index][1] = z; } } int l = vec.size(); if(l==0) return -1; int min = 10000000; for(int i=0;i<l;++i){ int x = vec[i][0]>vec[i][1] ? vec[i][0] : vec[i][1]; if(x<min) min = x; } return 2*min; } int main() { int n; cin >> n; for(int i=1;i<n;++i){ for(int j=1;j<n;++j){ cout << minMoves(i,j,n-1) << " "; } cout << endl; } return 0; }