#include <bits/stdc++.h>
using namespace std;
long long powmod(long long x, long long y, long long m = 998244353) {
  if (y == 0) return 1;
  long long ret = powmod(x, y / 2, m);
  ret = (ret * ret) % m;
  if (y % 2) ret = (ret * x) % m;
  return ret;
}
long long n, sm = 0;
long long temp[543210], arr[543210];
int check(long long val) {
  val = 2 * val + sm % 2;
  for (int j = 0; j < n; j++) {
    temp[j] = arr[j];
  }
  temp[n] = val;
  int ctr = n;
  while (ctr > 0 && temp[ctr] > temp[ctr - 1]) {
    swap(temp[ctr], temp[ctr - 1]);
    ctr--;
  }
  long long dsum = 0, ksum = 0, flag = 0, tsum = 0;
  for (long long i = 0; i <= n; i++) dsum += temp[i];
  stack<long long> stk;
  for (long long i = n; i >= 0; i--) {
    if ((i * (i + 1) + ksum) < dsum) {
      if (val >= temp[i]) {
        flag = -1;
      } else
        flag = 1;
      break;
    }
    if (temp[i] < i + 1) {
      ksum += temp[i];
      stk.push(temp[i]);
    } else {
      ksum += i + 1;
      tsum++;
    }
    dsum -= temp[i];
    while (!stk.empty() && stk.top() > i) {
      tsum++;
      stk.pop();
    }
    ksum -= tsum;
  }
  return flag;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
    sm += arr[i];
  }
  sort(arr, arr + n, greater<long long>());
  long long st = 0, en = n / 2, mid1, mid2;
  while (st <= en) {
    mid1 = (st + en) / 2;
    int ret = check(mid1);
    if (ret == 0) {
      en = mid1 - 1;
    } else if (ret == -1) {
      en = mid1 - 1;
      mid1--;
    } else {
      st = mid1 + 1;
      mid1++;
    }
  }
  st = 0;
  en = n / 2;
  while (st <= en) {
    mid2 = (st + en) / 2;
    int ret = check(mid2);
    if (ret == 0) {
      st = mid2 + 1;
    } else if (ret == -1) {
      en = mid2 - 1;
      mid2--;
    } else {
      st = mid2 + 1;
      mid2++;
    }
  }
  if (check(mid1) || check(mid2)) {
    cout << -1;
    return 0;
  }
  for (int i = mid1; i <= mid2; i++) {
    cout << 2 * i + sm % 2 << " ";
  }
  return 0;
}
