import java.util.ArrayDeque; import java.util.Scanner; public class knight { static int n; static ArrayDeque<loc> q; static int d=-1; public static void eval(int a, int b,boolean[][] ar){ loc curr=q.poll(); int[] t={a,-a,b,-b}; for(int i=0;i<4;i++) for(int k=i<2?2:0;k<(i<2?4:2);k++) if(curr.x+t[i]>=0 && curr.y+t[k]>=0 &&curr.x+t[i]<n && curr.y+t[k]<n&& !ar[curr.x+t[i]][curr.y+t[k]]) if(curr.x+t[i]==n-1&&curr.y+t[k]==n-1){ d=curr.dis+1; q.clear(); break; } else{ q.add(new loc(curr.x+t[i],curr.y+t[k],curr.dis+1)); ar[curr.x+t[i]][curr.y+t[k]]=true; } } public static void main(String[] args){ Scanner kb=new Scanner(System.in); n=kb.nextInt(); int[][] ans=new int[n-1][n-1]; for(int x=1;x<n;x++) for(int y=x;y<n;y++){ boolean[][]b=new boolean[n][n]; b[0][0]=true; q=new ArrayDeque<loc>(); q.add(new loc(0,0,0)); while(!q.isEmpty()){ eval(x, y, b); } ans[x-1][y-1]=ans[y-1][x-1]=d; d=-1; } String s=""; for(int[] a:ans){ for(int i:a){ s+=i+" "; } s=s.substring(0,s.length()-1)+"\n"; } System.out.print(s); } } class loc{ int x,y,dis; public loc(int a,int b, int c){ x=a; y=b; dis=c; } }