import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

	static int min = -1;
	static boolean[][] visited;
	static int[][] visited_moves;
	
	public static void solve(int b, int e, int x, int y, int moves, int n) {
		if(b > n-1 || e > n-1 || b < 0 || e < 0)
			return;
		if(moves >= min && min != -1)
			return;
		if(b == n-1 && e == n-1) {
			if(moves < min || min == -1) {
				min = moves;
				return;
			}
		}
		if(visited[b][e] && moves >= visited_moves[b][e])
			return;
		visited[b][e] = true;
		visited_moves[b][e] = moves;
		
		solve(b+x,e+y,x,y,moves+1,n);
		solve(b+x,e-y,x,y,moves+1,n);
		
		solve(b-x,e+y,x,y,moves+1,n);
		solve(b-x,e-y,x,y,moves+1,n);
		
		solve(b+y,e+x,x,y,moves+1,n);
		solve(b+y,e-x,x,y,moves+1,n);
		
		solve(b-y,e+x,x,y,moves+1,n);
		solve(b-y,e-x,x,y,moves+1,n);
		//visited[b][e] = false;
	}
	
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        visited = new boolean[n][n];
        visited_moves = new int[n][n];
        int[][] sol = new int[n][n];
        for(int i=1 ; i<n ; i++) {
        	for(int j=1 ; j<n ; j++) {
        		if(i == 1 && j == 1)
        			sol[i][j] = n-1;
        		else if(i == n-1 && j == n-1)
        			sol[i][j] = 1;
        		else if(sol[j][i] != 0)
        			sol[i][j] = sol[j][i];
        		else {
        			solve(0,0,i,j,0,n);
        			visited = new boolean[n][n];
        			visited_moves = new int[n][n];
	        		sol[i][j] = min;
	        		min = -1;
        		}
        	}
        }
        for(int i=1 ; i<n ; i++) {
        	for(int j=1 ; j<n ; j++)
        		System.out.print(sol[i][j] + " ");
        	System.out.println();
        }
    }
}