#include <bits/stdc++.h>
using namespace std;
int p[100001], rp[100001], n;
bool found = false;
int revStack[200002], revSize = 0;
bool TryAt(int i);
bool TryExpand(int oi, int opi) {
  int i = oi, pi = opi;
  if (i == pi && i != n + 1 - i) return false;
  int startSize = revSize;
  while (i != pi && !p[i] && !rp[pi]) {
    revStack[revSize++] = i;
    revStack[revSize++] = pi;
    p[i] = pi;
    rp[pi] = i;
    pi = n + 1 - i;
    i = p[i];
  }
  if (i == pi && i == n + 1 - i) {
    revStack[revSize++] = i;
    revStack[revSize++] = pi;
    p[i] = rp[i] = i;
  }
  if (p[i] != pi) {
    while (revSize > startSize) {
      rp[revStack[--revSize]] = 0;
      p[revStack[--revSize]] = 0;
    }
    return false;
  }
  int ncnt = n;
  for (int i = 1; i <= n; i++)
    if (!p[i]) {
      if (TryAt(i))
        return true;
      else
        break;
    } else {
      ncnt--;
    }
  if (!ncnt) return true;
  while (revSize > startSize) {
    rp[revStack[--revSize]] = 0;
    p[revStack[--revSize]] = 0;
  }
  return false;
}
bool TryAt(int i) {
  if (n % 4 > 1) return false;
  for (int j = n; j >= i; j--) {
    if (!rp[j]) {
      if (TryExpand(i, j)) return true;
    }
  }
  return false;
}
void w4(int a1, int a2, int a3, int a4) {
  p[a1] = a3;
  p[a2] = a1;
  p[a3] = a4;
  p[a4] = a2;
}
void w5(int a1, int a2, int a3, int a4, int a5) {
  p[a1] = a4;
  p[a2] = a1;
  p[a3] = a3;
  p[a4] = a5;
  p[a5] = a2;
}
int main(int argc, char *argv[]) {
  while (scanf("%d", &n) == 1) {
    memset(p, 0, sizeof(p));
    if (n % 4 > 1)
      printf("-1\n");
    else {
      if (n == 1)
        printf("1\n");
      else {
        for (int i = 1, j = n; i + 3 <= j; i += 2, j -= 2) {
          if (j - i > 4) {
            w4(i, i + 1, j - 1, j);
          } else if (j - i == 4) {
            w5(i, i + 1, i + 2, j - 1, j);
          } else if (j - i == 3) {
            w4(i, i + 1, j - 1, j);
          }
        }
        for (int i = 1; i <= n; i++) {
          printf("%d ", p[i]);
        }
        printf("\n");
      }
    }
  }
}
