#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 fix[25][25],ans[25][25],m[10000],x[10000],y[10000],px[91][91],py[91][91],ans10=0; int a[25][25]; int n,r=1; void go(int x,int y) { ans10++; if(x==0 && y==0){a[x][y]=1;return;} a[x][y]=1; go(px[x][y],py[x][y]); } int main(){ int n; cin >> n; for(int i=1;i<n;i++) { for(int j=1;j<n;j++) { r=1; fix[0][0] = 1; x[0]=0; y[0]=0; m[0]=0; int dx[8]={i,-i,-i,i,j,j,-j,-j},dy[8]={j,j,-j,-j,i,-i,-i,i}; for(int i=0;i<r;i++) { if(x[i]==n-1 && y[i]==n-1) break; for(int j=0;j<8;j++) if(x[i]+dx[j]<n && y[i]+dy[j]<n && x[i]+dx[j]>=0 && y[i]+dy[j]>=0 && fix[x[i]+dx[j]][y[i]+dy[j]]==0) { fix[x[i]+dx[j]][y[i]+dy[j]]=1; m[r]=m[i]+1; x[r]=x[i]+dx[j]; y[r]=y[i]+dy[j]; px[x[i]+dx[j]][y[i]+dy[j]]=x[i]; py[x[i]+dx[j]][y[i]+dy[j]]=y[i]; r++; } } if(fix[n-1][n-1]==1) go(px[n-1][n-1],py[n-1][n-1]); if(fix[n-1][n-1]!=1) cout<<"-1"<<" "; else cout<<ans10<<" "; ans10=0; for(int i1=0;i1<25;i1++) for(int j1=0;j1<25;j1++) a[i1][j1]=0,fix[i1][j1]=0; for(int i1=0;i1<91;i1++) for(int j1=0;j1<91;j1++) px[i1][j1]=0,py[i1][j1]=0; for(int i1=0;i1<10000;i1++) m[i1]=0,x[i1]=0,y[i1]=0; }cout<<endl;} return 0; }