#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
set<char> M[101];
long long mod = 1e9 + 7;
void solve() {
  long long n;
  cin >> n;
  vector<long long> a(n);
  for (long long &x : a) cin >> x;
  sort(a.begin(), a.end());
  if (n == 1) {
    cout << -1;
  } else if (n == 2 and a[0] == a[1]) {
    cout << 1 << '\n';
    cout << a[0] << '\n';
  } else if (n == 2) {
    if ((a[0] + a[1]) % 2 == 0) {
      cout << 3 << '\n';
      long long d = a[1] - a[0];
      cout << a[0] - d << ' ' << (a[0] + a[1]) / 2 << ' ' << a[1] + d << '\n';
    } else {
      cout << 2 << '\n';
      long long d = a[1] - a[0];
      cout << a[0] - d << ' ' << a[1] + d << '\n';
    }
  } else {
    map<long long, long long> map;
    for (long long i = 1; i < n; i++) {
      long long k = a[i] - a[i - 1];
      map[k]++;
    }
    if (map.size() >= 3)
      cout << 0 << '\n';
    else if (map.size() == 2 and map.rbegin()->second >= 2)
      cout << 0 << '\n';
    else if (map.size() == 2 and
             map.rbegin()->first == 2 * map.begin()->first) {
      cout << 1 << '\n';
      for (long long i = 1; i < n; i++) {
        long long k = a[i] - a[i - 1];
        if (k == map.rbegin()->first) {
          cout << (a[i] + a[i - 1]) / 2 << '\n';
          break;
        }
      }
    } else if (map.size() == 1 and map.begin()->first == 0) {
      cout << 1 << '\n';
      cout << a[0] << '\n';
    } else if (map.size() == 1) {
      cout << 2 << '\n';
      cout << a[0] - map.begin()->first << ' ' << a[n - 1] + map.begin()->first
           << '\n';
    } else
      cout << 0 << '\n';
  }
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  solve();
  return 0;
}
