## https://yukicoder.me/problems/no/2212 def main(): N = int(input()) if N == 1: print(-1) return matrix = [[0] * (2 ** N) for _ in range(2 ** N)] for i in range(2 ** N): for j in range(2 ** N): x = (i << N) + j matrix[i][j] = x for i in range(0, 2 ** N, 2): j = i tmp = matrix[i][j + 1] matrix[i][j + 1] = matrix[i][j] matrix[i][j] = tmp if j % 4 == 0: tmp = matrix[i][j] matrix[i][j] = matrix[i + 1][j] matrix[i + 1][j] = tmp tmp = matrix[i][j + 2] matrix[i][j + 2] = matrix[i + 1][j + 2] matrix[i + 1][j + 2] = tmp else: tmp = matrix[i][j] matrix[i][j] = matrix[i + 1][j] matrix[i + 1][j] = tmp tmp = matrix[i][j - 2] matrix[i][j - 2] = matrix[i + 1][j - 2] matrix[i + 1][j - 2] = tmp for i in range(2 ** N): print(" ".join(map(str, matrix[i]))) if __name__ == "__main__": main()