#include <bits/stdc++.h>
int N, V[500005], Freq[500005];
long long Sum;
int Check(int X) {
  for (int i = 0; i <= N; ++i) Freq[i] = 0;
  for (int i = 0; i < N; ++i) ++Freq[V[i]];
  ++Freq[X];
  int Less = 0;
  long long Left = 0, Right = 0;
  for (int k = 0, i = 0, Value; k <= N; ++k) {
    Value = (i == k && (i == N || V[i] < X) ? X : V[i++]);
    Left += Value;
    --Freq[Value];
    Right -= std::min(Value, k);
    Less += Freq[k];
    Right += N - k - Less;
    if (Left > Right + 1LL * (k + 1) * k) return ((i == k) ? 1 : -1);
  }
  return 0;
}
void Citire() {
  std::cin >> N;
  for (int i = 0; i < N; ++i) std::cin >> V[i], Sum += 1LL * V[i];
}
void Rezolvare() {
  std::sort(V, V + N, std::greater<int>());
  int Parity = Sum & 1;
  int Left = 0, Right = (N - Parity) / 2, Mid, Bound1 = -1, Bound2 = -1;
  while (Left <= Right) {
    Mid = (Left + Right) / 2;
    if (Check(2 * Mid + Parity) == -1)
      Left = Mid + 1;
    else
      Right = Mid - 1, Bound1 = Mid;
  }
  if (Bound1 == -1) {
    std::cout << "-1\n";
    return;
  }
  Left = Bound1, Right = (N - Parity) / 2;
  while (Left <= Right) {
    Mid = (Left + Right) / 2;
    if (Check(2 * Mid + Parity) == 1)
      Right = Mid - 1;
    else
      Left = Mid + 1, Bound2 = Mid;
  }
  if (Bound2 == -1) {
    std::cout << "-1\n";
    return;
  }
  for (int i = Bound1; i <= Bound2; ++i, std::cout << ' ')
    std::cout << 2 * i + Parity;
  std::cout << '\n';
}
void Boost() { std::ios_base::sync_with_stdio(false); }
int main() {
  Boost();
  Citire();
  Rezolvare();
  return 0;
}
