#include <bits/stdc++.h>
using namespace std;
inline void scanint(int &k) {
  register char c;
  k = 0;
  for (c = getchar(); c < '0' or c > '9'; c = getchar())
    ;
  for (; c >= '0' and c <= '9'; c = getchar())
    k = (k << 3) + (k << 1) + c - '0';
}
void count_sort(vector<int> &arr) {
  int maxi = *max_element(arr.begin(), arr.end()) + 2;
  vector<int> cnt(maxi + 2, 0);
  for (int &i : arr) cnt[i]++;
  for (int i = 1; i <= maxi; i++) cnt[i] += cnt[i - 1];
  vector<int> aux(arr.size());
  for (int &i : arr) aux[--cnt[i]] = i;
  arr = aux;
  reverse(arr.begin(), arr.end());
}
int erdosGal(vector<int> degree, int x) {
  degree.push_back(x);
  int n = degree.size();
  vector<long long> pref(n + 2);
  count_sort(degree);
  int P;
  for (int i = 0; i < n; i++) {
    pref[i + 1] = pref[i] + degree[i];
    if (degree[i] == x) P = i;
  }
  long long j = n;
  for (long long k = 1; k <= n; k++) {
    long long L = pref[k];
    long long R = k * (k - 1);
    while (j > 0 and degree[j - 1] < k) j--;
    long long pos = max(j, k);
    R += pref[n] - pref[pos] + (pos - k) * k;
    if (L > R) return P <= k - 1 ? -1 : 1;
  }
  return 0;
}
int32_t main() {
  int n;
  scanint(n);
  vector<int> degree(n);
  long long sum = 0;
  for (int &i : degree) scanint(i), sum += i;
  bool par = sum & 1;
  int l = 0, r = (n - par) / 2, mini = n, maxi = 0;
  while (l <= r) {
    int mid = (l + r) / 2;
    int value = erdosGal(degree, 2 * mid + par);
    if (value == 0)
      mini = mid, r = mid - 1;
    else if (value == -1)
      r = mid - 1;
    else
      l = mid + 1;
  }
  l = 0, r = (n - par) / 2;
  while (l <= r) {
    int mid = (l + r) / 2;
    int value = erdosGal(degree, 2 * mid + par);
    if (value == 0)
      maxi = mid, l = mid + 1;
    else if (value == -1)
      r = mid - 1;
    else
      l = mid + 1;
  }
  if (mini > maxi) return puts("-1"), 0;
  for (int i = mini; i <= maxi; i++) cout << 2 * i + par << ' ';
  puts("");
  return 0;
}
