#include <bits/stdc++.h>
using namespace std;
template <typename num_t>
inline void addmod(num_t& a, const long long& b, const int& m) {
  a = (a + b) % m;
  if (a < 0) a += m;
}
template <typename num_t>
inline void update_max(num_t& a, const num_t& b) {
  a = max(a, b);
}
template <typename num_t>
inline void update_min(num_t& a, const num_t& b) {
  a = min(a, b);
}
template <typename num_t>
num_t gcd(num_t lhs, num_t rhs) {
  return !lhs ? rhs : gcd(rhs % lhs, lhs);
}
template <typename num_t>
num_t pw(num_t n, num_t k, num_t mod) {
  num_t res = 1;
  for (; k > 0; k >>= 1) {
    if (k & 1) res = 1ll * res * n % mod;
    n = 1ll * n * n % mod;
  }
  return res;
}
const int inf = 1e9 + 7;
const int mod = 998244353;
const long long ll_inf = 9ll * inf * inf;
const int MAX_N = 5e5 + 7;
int a[MAX_N], b[MAX_N];
long long sum[MAX_N];
int n;
pair<bool, bool> kt(int d) {
  int m = 0;
  bool added = false;
  int idx = -1;
  for (int i = n - 1; i >= 0; --i) {
    if (!added && d >= a[i]) {
      added = true;
      b[++m] = d;
      idx = m;
    }
    b[++m] = a[i];
  }
  if (!added) {
    b[++m] = d;
    idx = m;
  }
  for (int i = 1; i <= m; ++i) sum[i] = sum[i - 1] + b[i];
  int ptr = 1;
  for (int i = 1; i <= m; ++i) {
    update_max(ptr, i);
    while (ptr < m && b[ptr + 1] >= i) ++ptr;
    while (ptr > i && b[ptr] < i) --ptr;
    long long tol = 1ll * (ptr - 1) * i;
    tol += sum[m] - sum[ptr];
    if (sum[i] > tol) return {false, idx > i};
  }
  return {true, true};
}
void solve() {
  cin >> n;
  for (int i = (0), _b = (n); i < _b; ++i) cin >> a[i];
  sort(a, a + n);
  int odd = 0;
  for (int i = (0), _b = (n); i < _b; ++i) odd ^= (a[i] & 1);
  int found = -1;
  int lo = odd, hi = n - ((n + odd) & 1);
  while (lo <= hi) {
    int mid = (lo + hi) >> 1;
    mid += (mid + odd) & 1;
    auto temp = kt(mid);
    if (temp.first) {
      found = mid;
      break;
    } else {
      if (temp.second) {
        lo = mid + 2;
      } else
        hi = mid - 2;
    }
  }
  if (found == -1) {
    cout << -1;
  } else {
    int lhs = -1, rhs = -1;
    lo = found;
    hi = n - ((n + odd) & 1);
    while (lo <= hi) {
      int mid = (lo + hi) >> 1;
      mid += (mid + odd) & 1;
      if (kt(mid).first) {
        rhs = mid;
        lo = mid + 2;
      } else
        hi = mid - 2;
    }
    lo = odd;
    hi = found;
    while (lo <= hi) {
      int mid = (lo + hi) >> 1;
      mid += (mid + odd) & 1;
      if (kt(mid).first) {
        lhs = mid;
        hi = mid - 2;
      } else
        lo = mid + 2;
    }
    while (lhs <= rhs) {
      cout << lhs << ' ';
      lhs += 2;
    }
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  const bool multiple_test = false;
  int test = 1;
  if (multiple_test) cin >> test;
  for (int i = 0; i < test; ++i) {
    solve();
  }
}
