#include <bits/stdc++.h>
const int N = 5e5 + 5;
int A[N];
char IN[500000], *SS = IN, *TT = IN;
inline int read() {
  int now = 0;
  register char c =
      (SS == TT && (TT = (SS = IN) + fread(IN, 1, 500000, stdin), SS == TT)
           ? EOF
           : *SS++);
  for (; !isdigit(c);
       c = (SS == TT && (TT = (SS = IN) + fread(IN, 1, 500000, stdin), SS == TT)
                ? EOF
                : *SS++))
    ;
  for (; isdigit(c);
       now = now * 10 + c - '0',
       c = (SS == TT && (TT = (SS = IN) + fread(IN, 1, 500000, stdin), SS == TT)
                ? EOF
                : *SS++))
    ;
  return now;
}
int Check(const int n, const int mid) {
  static int d[N];
  static long long sum[N];
  A[n] = -1;
  for (int i = 1, p = 1; i <= n; ++i)
    d[i] = (p == i && mid > A[p]) ? mid : A[p++], sum[i] = sum[i - 1] + d[i];
  long long vl, vr;
  for (int k = 1, p = n; k <= n; ++k) {
    while (p > k && d[p] < k) --p;
    vl = sum[k], vr = 1ll * k * (k - 1) + 1ll * (std::max(p, k) - k) * k +
                      sum[n] - sum[std::max(p, k)];
    if (vl > vr) return mid < d[k] ? -1 : 1;
  }
  return 0;
}
int main() {
  int n = read(), parity = 0;
  for (int i = 1; i <= n; ++i) parity ^= (A[i] = read()) & 1;
  std::sort(A + 1, A + 1 + n, std::greater<int>());
  int l = 0, r = n - parity >> 1, L = 0, R = -1, mid;
  while (l <= r)
    if (Check(n + 1, (mid = l + r >> 1) * 2 + parity) >= 0)
      L = mid, r = mid - 1;
    else
      l = mid + 1;
  l = 0, r = n - parity >> 1;
  while (l <= r)
    if (Check(n + 1, (mid = l + r >> 1) * 2 + parity) <= 0)
      R = mid, l = mid + 1;
    else
      r = mid - 1;
  if (L > R)
    puts("-1");
  else
    for (int i = L; i <= R; ++i) printf("%d ", i * 2 + parity);
  return 0;
}
