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