#!/bin/python3

import sys


n = int(input().strip())
lst = []
for i in range(1, n):
    lst.append([])
    for j in range(1, i):
        lst[i - 1].append(lst[j - 1][i - 1])
    if (n - 1) % i == 0:
        lst[i - 1].append((n - 1) // i)
    else:
        lst[i - 1].append(-1)
    for j in range(i + 1, n):
        arr = [(i, j), (i, -j), (-i, j), (-i, -j), (j, i), (j, -i), (-j, i), (-j, -i)]
        maxdist = n * n
        v = [[0 for _ in range(n)] for _ in range(n)]
        q = [(n - 1, n - 1, 0)]
        v[n-1][n-1] = 1
        possib = 1
        steps = 0
        while(q):
            curr = q.pop(0)
            steps = curr[2]
            if curr[0] == 0 and curr[1] == 0:
                lst[i - 1].append(steps)
                break
            for el in arr:
                k = el[0] + curr[0]
                l = el[1] + curr[1]
                if k >= 0 and k <= n - 1 and l >= 0 and l <= n - 1 and v[k][l] != 1:
                    v[k][l] = 1
                    q.append((k, l, steps + 1))
        if v[0][0] == 0:
            lst[i - 1].append(-1)
for el in lst:
    print(*el)