#include <bits/stdc++.h>
using namespace std;
const int MAN = 100000 + 5;
int n, cr, i, x, p1, p2, o;
int v, p[MAN];
int pe[MAN];
bool mark[MAN];
int get(int x) {
  if (pe[x] == x) return x;
  return pe[x] = get(pe[x]);
}
void Union(int x, int y) {
  x = get(x);
  y = get(y);
  pe[x] = y;
}
int main() {
  scanf("%d", &n);
  if (n % 2 == 1) {
    printf("-1\n");
    return 0;
  }
  for (i = 0; i < n; ++i) p[i] = -1;
  p[0] = 1;
  p[n / 2] = 0;
  p[n - 1] = n - 2;
  p[(n - 2) / 2] = n - 1;
  for (i = 0; i < n; ++i) {
    pe[i] = i;
  }
  pe[1] = 0;
  pe[n / 2] = 0;
  pe[n - 2] = n - 1;
  pe[(n - 2) / 2] = n - 1;
  for (i = 1; i < n; ++i) {
    if (p[i] == -1) {
      p1 = (2 * i) % n;
      p2 = (2 * i + 1) % n;
      v = p1 / 2;
      if (v == i) v = (p1 + n) / 2;
      if (get(p2) == get(v) || get(p1) == get(i)) {
        o = p1;
        p1 = p2;
        p2 = o;
      }
      p[i] = p1;
      Union(i, p1);
      p[v] = p2;
      Union(v, p2);
    }
  }
  i = 0;
  while (p[i] != 0) {
    printf("%d ", i);
    i = p[i];
  }
  printf("%d 0\n", i);
  return 0;
}
