#include <bits/stdc++.h>
using namespace std;
long long b[500005], a[500005], n, t[500005];
long long judge(long long x) {
  memset(t, 0, sizeof(t));
  for (int i = 0; i < n; i++) t[a[i]]++;
  t[x]++;
  long long left = 0, right = 0, i = 0, sum = 0;
  for (long long k = 0; k <= n; k++) {
    long long val;
    val = (i == k && (a[i] < x || i == n)) ? x : a[i++];
    left += val;
    t[val]--;
    right -= min(k, val);
    sum += t[k];
    right += n - k - sum;
    if (left > right + (long long)(k * (k + 1))) {
      if (i == k)
        return 1;
      else
        return -1;
    }
  }
  return 0;
}
int main() {
  scanf("%lld", &n);
  long long sum = 0;
  for (int i = 0; i < n; i++) scanf("%lld", &b[i]), sum += b[i];
  sort(b, b + n);
  for (int i = 0; i < n; i++) a[i] = b[n - i - 1];
  long long tmp = sum & 1;
  long long l = 0, r = n / 2, mid, minnum = -1, maxnum = -1;
  while (l <= r) {
    mid = (l + r) >> 1;
    if (judge(mid * 2 + tmp) == -1) {
      l = mid + 1;
    } else {
      r = mid - 1;
      minnum = mid;
    }
  }
  l = minnum, r = n / 2;
  while (l <= r) {
    mid = (l + r) >> 1;
    if (judge(mid * 2 + tmp) == 1) {
      r = mid - 1;
    } else {
      l = mid + 1;
      maxnum = mid;
    }
  }
  if (maxnum == -1 || minnum == -1) {
    puts("-1");
    return 0;
  }
  for (int i = minnum; i <= maxnum; i++) printf("%d ", 2 * i + tmp);
  return 0;
}
