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

public class Solution {
    

    //This Function takes the input as 2 integers which are actually corresponding to KnightL(a , b)
    //It will return -1 if the piece cannot go from (a , b) to (n - 1 , n - 1) i.e reach destination
    public static int minPossibleMoves(int x , int y , int z){
        
    }
    

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        // your code goes here
        
        /*Create and initialize a 2 - D Array 
         It will store the Minimum Possible moves taken by chess piece to move from (0 , 0) to (n - 1 , n - 1)*/
        int a[] = new int[n-1][n-1];
        
        for(int i = 0 ; i < n - 1 ; i++){
            for(int j = 0 ; j < n - 1 ; j++){
                a[i][j] = 0;
            }
        }
        
        //This Segment of Code will fill the 2 - D Array with all the Minimum Possible moves for the piece
        for(int i = 1 ; i < n - 1 ; i++){
            for(int j = 1 ; j < n - 1 ; j++){
                a[i][j] = minPossibleMoves(i , j , n - 1);//Passing arguments as (a , b) alongwith destination
            }
        }
        
        //This Segment of Code will print that 2 - D Array
        for(int i = 0 ; i < n - 1 ; i++){
            for(int j = 0 ; j < n - 1 ; j++){
                System.out.print(a[i][j] + " ");
            }
            System.out.println();
        }
        //////////////////////////////////////////////END/////////////////////////////////////////////////
    }
}