#include<bits/stdc++.h> using namespace std; int main() { int x; cin>>x; int array[25][25]; for(int i=1;i<x;i++){ for(int j=1;j<x;j++){ for(int k=0;k<x;k++){ for(int l=0;l<x;l++){ array[k][l]=2147483640; } } int a=i; int b=j; array[0][0]=0; queue<pair<int,int> > q; pair<int,int> foo; foo=make_pair(0,0); q.push(foo); while(q.size()!=0){ int one=q.front().first; int two=q.front().second; q.pop(); if(one+a<x&&two+b<x&&array[one+a][two+b]>array[one][two]+1){ array[one+a][two+b]=array[one][two]+1; foo=make_pair(one+a,two+b); q.push(foo); }if(one-a>=0&&two+b<x&&array[one-a][two+b]>array[one][two]+1){ array[one-a][two+b]=array[one][two]+1; foo=make_pair(one-a,two+b); q.push(foo); }if(one+a<x&&two-b>=0&&array[one+a][two-b]>array[one][two]+1){ array[one+a][two-b]=array[one][two]+1; foo=make_pair(one+a,two-b); q.push(foo); }if(one-a>=0&&two-b>=0&&array[one-a][two-b]>array[one][two]+1){ array[one-a][two-b]=array[one][two]+1; foo=make_pair(one-a,two-b); q.push(foo); }if(one+b<x&&two+a<x&&array[one+b][two+a]>array[one][two]+1){ array[one+b][two+a]=array[one][two]+1; foo=make_pair(one+b,two+a); q.push(foo); }if(one-b>=0&&two+a<x&&array[one-b][two+a]>array[one][two]+1){ array[one-b][two+a]=array[one][two]+1; foo=make_pair(one-b,two+a); q.push(foo); }if(one+b<x&&two-a>=0&&array[one+b][two-a]>array[one][two]+1){ array[one+b][two-a]=array[one][two]+1; foo=make_pair(one+b,two-a); q.push(foo); }if(one-b>=0&&two-a>=0&&array[one-b][two-a]>array[one][two]+1){ array[one-b][two-a]=array[one][two]+1; foo=make_pair(one-b,two-a); q.push(foo); } } if(array[x-1][x-1]==2147483640){ cout<<-1; }else{ cout<<array[x-1][x-1]; } if(j==x-1){ cout<<endl; }else{ cout<<" "; } } } return 0; }