#include <bits/stdc++.h>
using namespace std;
int32_t main() {
  long long tc = 1;
  while (tc--) {
    long long n;
    cin >> n;
    vector<long long> a(n);
    for (auto &x : a) cin >> x;
    sort(a.begin(), a.end());
    if (n == 1) {
      cout << -1;
    } else if (n == 2) {
      long long d = a[1] - a[0];
      if (d == 0) {
        cout << 1 << '\n';
        cout << a[0];
      } else {
        if (((a[1] - a[0]) % 2 == 0) && a[1] - a[0] > 1) {
          cout << 3 << '\n';
          cout << a[0] - d << ' ' << a[0] + (d / 2) << ' ' << a[1] + d;
        } else {
          cout << 2 << '\n';
          cout << a[0] - d << ' ' << a[1] + d << '\n';
        }
      }
    } else {
      vector<long long> d(n - 1);
      for (long long i = 0; i < n - 1; i++) d[i] = a[i + 1] - a[i];
      bool uniform = true;
      for (long long i = 1; i < d.size(); i++)
        if (d[i] != d[i - 1]) uniform = false;
      if (uniform) {
        if (d[0] == 0) {
          cout << 1 << '\n';
          cout << a[0];
        } else {
          cout << 2 << '\n';
          cout << a[0] - d[0] << ' ' << a[n - 1] + d[0];
        }
      } else {
        set<long long> cds;
        for (auto xy : d) cds.insert(xy);
        if (cds.size() > 2)
          cout << 0;
        else {
          long long ax = *cds.begin();
          auto it = cds.end();
          it--;
          long long b = *it;
          long long mx = max(ax, b), mn = min(ax, b);
          long long cmx = 0;
          for (auto xy : d)
            if (xy == mx) cmx++;
          if (mx == 2 * mn && cmx == 1) {
            cout << 1 << '\n';
            for (long long i = 0; i < (long long)d.size(); i++)
              if (d[i] == mx) {
                cout << a[i] + mn;
              }
          } else {
            cout << 0;
          }
        }
      }
    }
  }
  return 0;
}
