#include<bits/stdc++.h> #include<stdio.h> #include<stdlib.h> using namespace std; #define ll long long int ll n; bool inrange(ll xx,ll yy) { if(xx>=0&&xx<n&&yy>=0&&yy<n) return true; else return false; } ll bfs(ll sx,ll sy,ll a,ll b) { queue< pair<ll,ll> >q; pair<ll,ll>pp; ll i,cx,cy,ncx,ncy,j; ll dist[n+1][n+1]; ll vis[n+1][n+1]; for(i=0;i<n;i++) { for(j=0;j<n;j++) { dist[i][j]=100000; vis[i][j]=0; } } ll r[]={-a,a,-a,a,-b,b,-b,b}; ll u[]={b,b,-b,-b,-a,-a,a,a}; q.push(make_pair(sx,sy)); dist[sx][sy]=0; while(!q.empty()) { pp=q.front(); q.pop(); cx=pp.first; cy=pp.second; if(vis[cx][cy]==1) continue; vis[cx][cy]=1; for(i=0;i<8;i++) { ncx=cx+r[i]; ncy=cy+u[i]; if(inrange(ncx,ncy)&&vis[ncx][ncy]==0&&dist[cx][cy]+1<dist[ncx][ncy]) { dist[ncx][ncy]=1+dist[cx][cy]; q.push(make_pair(ncx,ncy)); } } } return dist[n-1][n-1]; } int main() { ll t,i,j; cin>>n; for(i=1;i<n;i++) { for(j=1;j<n;j++) { t=bfs(0,0,i,j); if(t==100000) cout<<"-1 "; else cout<<t<<" "; } cout<<"\n"; } return 0; }