#include<bits/stdc++.h> using namespace std; int has[25],a[200005],ans=1000000,n; bool check(int i,int j) { if(i>=0 && i<n && j>=0 && j<n) return 1; return 0; } #define F first #define S second int main() { cin>>n; for(int i=1;i<n;++i) { for(int j=1;j<n;++j) { int vis[26][26]; memset(vis,0,sizeof(vis)); //ans=doit(i,j,0,0,vis); queue<pair<pair<int,int>,int> >q; q.push({{0,0},0}); int dis[26][26]; for(int i=0;i<26;++i) { for(int j=0;j<26;++j) { dis[i][j]=1e6; } } dis[0][0]=0; while(!q.empty()) { pair<pair<int,int>,int> p=q.front(); q.pop(); if(p.F.F==n-1 && p.F.S==n-1) break; if(vis[p.F.F][p.F.S]) continue; vis[p.F.F][p.F.S]=1; int x=p.F.F,y=p.F.S,di=p.S; //cout<<i<<" "<<j<<" "<<x<<" "<<y<<" "<<di<<endl; int dx[]={i,i,-i,-i,j,j,-j,-j}; int dy[]={j,-j,j,-j,i,-i,i,-i}; for(int i=0;i<8;++i) { if(check(x+dx[i],y+dy[i]) && !vis[x+dx[i]][y+dy[i]] && dis[x+dx[i]][y+dy[i]]>di+1) { q.push({{x+dx[i],y+dy[i]},di+1}); dis[x+dx[i]][y+dy[i]]=di+1; } } } if(dis[n-1][n-1]!=1000000) printf("%d ",dis[n-1][n-1]); else printf("-1 "); } printf("\n"); } return 0; }