N = int(input()) if N == 1: exit(print(-1)) if N == 2: print(7, 14, 0, 8) print(4, 12, 2, 11) print(15, 9, 6, 1) print(13, 10, 5, 3) exit() A = [[0] * (1 << N) for _ in range(1 << N)] for i in range(1 << (2 * N - 2)): r = i // (1 << (N - 1)) c = i % (1 << (N - 1)) A[r][c] = i A[(1 << N) - 1 - c][r] = i A[c][(1 << N) - 1 - r] = i A[r + (1 << (N - 1))][c + (1 << (N - 1))] = i for i in range(1 << N): for j in range(1 << N): A[i][j] <<= 1 if i < (1 << (N - 1)): A[i][j] += 1 A[i][j] <<= 1 for i in range(1 << N): for j in range(1 << N): if i < (1 << (N - 1)) and j < (1 << (N - 1)): if i == 0: A[i][j] += 1 elif i < (1 << (N - 1)) and j >= (1 << (N - 1)): if j != ((1 << N) - 1): A[i][j] += 1 elif i >= (1 << (N - 1)) and j < (1 << (N - 1)): if j != 0: A[i][j] += 1 else: if i == 1 << (N - 1): A[i][j] += 1 for a in A: print(*a)