#include <bits/stdc++.h>
using namespace std;
long long a[2000000];
int main() {
  int n;
  while (cin >> n) {
    for (int i = 1; i <= 2; i++) int sss = 1;
    for (int i = 1; i <= n; i++) {
      cin >> a[i];
    }
    sort(a + 1, a + 1 + n);
    map<long long, int> mp;
    vector<long long> v;
    for (int i = 2; i <= n; i++) {
      if (mp[a[i] - a[i - 1]] == 0) {
        mp[a[i] - a[i - 1]] = 1;
        v.push_back(a[i] - a[i - 1]);
      } else
        mp[a[i] - a[i - 1]]++;
    }
    if (n == 1)
      puts("-1");
    else if (n == 2) {
      if (a[1] == a[2])
        cout << 1 << endl << a[1] << endl;
      else {
        if (a[2] - a[1] == 1) {
          cout << 2 << endl << a[1] - 1 << " " << a[2] + 1 << endl;
        } else {
          if ((a[2] - a[1]) % 2 == 0)
            cout << 3 << endl
                 << a[1] - (a[2] - a[1]) << " " << a[1] + (a[2] - a[1]) / 2
                 << " " << a[2] + a[2] - a[1] << endl;
          else
            cout << 2 << endl
                 << a[1] - (a[2] - a[1]) << " " << a[2] + a[2] - a[1] << endl;
        }
      }
    } else if (v.size() >= 3) {
      puts("0");
    } else if (v.size() == 1) {
      if (a[1] == a[2]) {
        cout << 1 << endl << a[1] << endl;
        continue;
      }
      printf("%d\n", 2);
      cout << a[1] - v[0] << " " << a[n] + v[0] << endl;
    } else if (v.size() == 2) {
      if (mp[v[0]] == n - 2 && v[0] * 2 == v[1]) {
        printf("%d\n", 1);
        for (int i = 2; i <= n; i++) {
          if (a[i] - a[i - 1] == v[1]) {
            cout << a[i - 1] + v[0] << endl;
            break;
          }
        }
      } else if (mp[v[1]] == n - 2 && v[1] * 2 == v[0]) {
        printf("%d\n", 1);
        for (int i = 2; i <= n; i++) {
          if (a[i] - a[i - 1] == v[0]) {
            cout << a[i - 1] + v[1] << endl;
            break;
          }
        }
      } else
        puts("0");
    }
  }
  return 0;
}
