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;
	}
}