#include <bits/stdc++.h>
const int MAXN = 100050;
bool vis[MAXN];
int n;
std::stack<int> s;
void dfs(int x) {
  if (vis[x]) return;
  vis[x] = 1;
  if (vis[(x + (n / 2)) % n]) {
    !vis[(2 * x) % n] ? dfs(2 * x % n) : dfs((2 * x + 1) % n);
  } else {
    dfs((2 * x) % n);
    if (!vis[(x + n / 2) % n]) {
      dfs((2 * x + 1) % n);
    }
  }
  s.push(x);
}
int main() {
  scanf("%d", &n);
  if (n % 2) {
    printf("-1");
    return 0;
  }
  dfs(0);
  while (!s.empty()) {
    printf("%d ", s.top());
    s.pop();
  }
  printf("0");
  return 0;
}
