#include <stdio.h> const int bit[11] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024}; int main() { int N; scanf("%d", &N); if (N == 1) { printf("-1\n"); return 0; } int i, j, k, ans[1024][1024]; for (i = 0, k = 0; i < bit[N]; i++) { for (j = 0; j < bit[N]; j++) { ans[(i+j)%bit[N]][j] = k++; } } for (i = 0; i < bit[N]; i += 2) { ans[i][i] ^= ans[i+1][i+1]; ans[i+1][i+1] ^= ans[i][i]; ans[i][i] ^= ans[i+1][i+1]; } for (i = 0; i < bit[N]; i++) { for (j = 0; j < bit[N]; j++) printf("%d ", ans[i][j]); printf("\n"); } fflush(stdout); return 0; }