#include <bits/stdc++.h>
using namespace std;
int N;
int fa[100010];
void init() {
  for (int i = 0; i < N; i++) fa[i] = i;
}
int f(int u) {
  if (fa[u] == u)
    return u;
  else
    return fa[u] = f(fa[u]);
}
void mrg(int u, int v) {
  u = f(u);
  v = f(v);
  fa[v] = u;
}
int vis[100010], nxt[100010];
int main() {
  scanf("%d", &N);
  if (N % 2) {
    printf("-1");
    return 0;
  }
  init();
  for (int i = 0; i < N; i++)
    if (!vis[i]) {
      int u = i;
      while (1) {
        vis[u] = 1;
        mrg(i, u);
        if (!vis[(2 * u) % N]) {
          nxt[u] = (2 * u) % N;
          u = nxt[u];
          continue;
        }
        if (!vis[(2 * u + 1) % N]) {
          nxt[u] = (2 * u + 1) % N;
          u = nxt[u];
          continue;
        }
        break;
      }
      nxt[u] = i;
    }
  for (int i = 0; i < N / 2; i++) {
    if (f(i) != f(i + N / 2)) {
      nxt[i] ^= 1;
      nxt[i + N / 2] ^= 1;
      mrg(i, i + N / 2);
    }
  }
  int u = 0;
  while (1) {
    printf("%d ", u);
    u = nxt[u];
    if (!u) break;
  }
  printf("0");
}
