from Queue import *
n = int(input())

oo = 1000000000

create_field = lambda: [[oo] * n for i in range(n)]

erg = create_field()

for a in range(1, n):
    for b in range(a, n):
        t = create_field()

        pos = [(-a, b), (a, b), (a, -b), (-a, -b), (b, a), (-b, a), (b, -a), (-b, -a)]

        q = Queue()
        q.put((0, n-1, n-1))

        while not q.empty():
            s, x, y = q.get()
            if t[x][y] == oo:
                t[x][y] = s;
                for dx,dy in pos:
                    nx, ny = x+dx, y+dy
                    if 0 <= nx < n and 0 <= ny < n and t[nx][ny] == oo:
                        q.put((s+1, nx, ny))

            if x == 0 and y == 0:
                break

        erg[a-1][b-1] = t[0][0]


for i in range(n-1):
    for j in range(i, n-1):
        erg[j][i] = erg[i][j]

for i in range(n-1):
    for j in range(n-1):
        #print(str(erg[i][j] if erg[i][j] != oo else -1) + " ", end="")
        print str(erg[i][j] if erg[i][j] != oo else -1),
    #print()
    print