#!/bin/python

import sys
from copy import deepcopy

N = int(raw_input().strip())

jumps = list()

for i in range(1, N):
    for j in range(1, N):
        if (j, i) not in jumps:
            jumps.append((i, j))

result = [[0 for i in range(N-1)] for i in range(N-1)]

def update_bord(n, (a, b)):
    bord = [[0 for i in range(n)] for i in range(n)]
    bord[0][0] = 1
    updated = True
    counter = 0
    while bord[n-1][n-1] == 0 and updated:
        new_bord = deepcopy(bord)
        for i in range(n):
            for j in range(n):
                if bord[i][j] == 1:
                    if i-a >= 0:
                        if j-b >= 0:
                            new_bord[i-a][j-b] = 1
                        if j+b < n:
                            new_bord[i-a][j+b] = 1
                    if i+a < n:
                        if j-b >= 0:
                            new_bord[i+a][j-b] = 1
                        if j+b < n:
                            new_bord[i+a][j+b] = 1
                    if i-b >= 0:
                        if j-a >= 0:
                            new_bord[i-b][j-a] = 1
                        if j+a < n:
                            new_bord[i-b][j+a] = 1
                    if i+b < n:
                        if j-a >= 0:
                            new_bord[i+b][j-a] = 1
                        if j+a < n:
                            new_bord[i+b][j+a] = 1

        counter += 1
        if new_bord == bord:
            updated = False

        bord = deepcopy(new_bord)
    if updated:
        return counter
    else:
        return -1
    
for jump in jumps:
    count = update_bord(N, jump)
    result[jump[0]-1][jump[1]-1] = count
    result[jump[1]-1][jump[0]-1] = count
    
for row in result:
    for item in row:
        print item,
    print