#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <string>
#include <bitset>
#include <cstdio>
#include <limits>
#include <vector>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <fstream>
#include <numeric>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <unordered_map>

using namespace std;

int f(int n ,  int a , int b , int x , int y, int **arr){
    
    arr[x][y]=1;
    
    if(x==n-1 && y==n-1){
        arr[x][y]=-2;
        return 0;
    }
    
    int i1=INT_MAX,i2=INT_MAX,i3=INT_MAX,i4=INT_MAX,i5=INT_MAX,i6=INT_MAX;
    
    if( (x+a)<=n-1 && (y+b)<=n-1 && arr[x+a][y+b]!=1){
        i1 = f(n,a,b,x+a,y+b,arr);
        if(i1==-1){
            i1=INT_MAX;
        }
    }
    if( (x-a)>=0 && (y+b)<=n-1 && arr[x-a][y+b]!=1){
        i2 = f(n,a,b,x-a,y+b,arr);
        if(i2==-1){
            i2=INT_MAX;
        }
    }
    if( (x+a)<=n-1 && (y-b)>=0 && arr[x+a][y-b]!=1){
        i3 = f(n,a,b,x+a,y-b,arr);   
        if(i3==-1){
            i3=INT_MAX;
        }
    }
    if( (x+b)<=n-1 && (y+a)<=n-1 && arr[x+b][y+a]!=1){
        i4 = f(n,a,b,x+b,y+a,arr); 
        if(i4==-1){
            i4=INT_MAX;
        }
    }
    if( (x-b)>=0 && (y+a)<=n-1 && arr[x-b][y+a]!=1){
        i5 = f(n,a,b,x-b,y+a,arr);
        if(i5==-1){
            i5=INT_MAX;
        }
    }
    if( (x+b)<=n-1 && (y-a)>=0 && arr[x+b][y-a]!=1){
        i6 = f(n,a,b,x+b,y-a,arr);  
        if(i6==-1){
            i6=INT_MAX;
        }
    }
    int ans = min(i1,min(i2,min(i3,min(i4,min(i5,i6)))));
    if(ans == INT_MAX){
        return -1;
    }
    
    return ans+1;
}

int fhelper(int n , int a ,int b){
    int **ans = new int*[n];
    for(int i = 0; i < n; i++) {
        ans[i] = new int[n];
        for(int j = 0; j < n; j++) {
            ans[i][j] = -2;
        }
    }
    return f(n,a,b,0,0,ans);
}
    
int main(){
    int n;
    cin >> n;
    // your code goes here
    for(int a=1 ; a<= n-1 ; a++){
        for(int b=1 ; b<=n-1 ; b++){
            cout<<fhelper(n,a,b)<<" ";
        }
        cout<<endl;
    }
    return 0;
}