#include <bits/stdc++.h>
using namespace std;
int a[int(1e5) + 10];
int n;
int check(int ind) {
  for (int i = 1; i < n; i++) {
    if (i == ind) continue;
    return a[i] - a[i - 1];
  }
}
int main() {
  cin >> n;
  if (n == 1) {
    cin >> n;
    cout << "-1" << endl;
  } else if (n == 2) {
    cin >> a[0] >> a[1];
    sort(a, a + 2);
    int diff = a[1] - a[0];
    if (diff == 0)
      cout << 1 << "\n" << a[0] << endl;
    else if (diff % 2 == 0) {
      cout << 3 << endl;
      cout << a[0] - diff << " " << a[0] + diff / 2 << " " << a[1] + diff
           << endl;
    } else {
      cout << 2 << endl;
      cout << a[0] - diff << " " << a[1] + diff << endl;
    }
  } else {
    for (int i = 0; i < n; i++) cin >> a[i];
    sort(a, a + n);
    map<int, int> diff;
    for (int i = 1; i < n; i++) {
      diff[a[i] - a[i - 1]]++;
    }
    map<int, int>::iterator iter;
    if (diff.size() == 1) {
      int d;
      for (iter = diff.begin(); iter != diff.end(); iter++) d = iter->first;
      if (d == 0)
        cout << 1 << "\n" << a[0] << endl;
      else {
        cout << 2 << endl;
        cout << a[0] - d << " " << a[n - 1] + d << endl;
      }
    } else if (diff.size() == 2) {
      int cnt_1 = 0, cnt_2 = 0, d_1 = 0, d_2 = 0;
      for (iter = diff.begin(); iter != diff.end(); iter++) {
        if (iter == diff.begin())
          d_1 = iter->first, cnt_1 = iter->second;
        else
          d_2 = iter->first, cnt_2 = iter->second;
      }
      if ((d_1 == 0 && d_2 != 0) || (d_2 == 0 && d_1 != 0) ||
          (min(cnt_1, cnt_2) > 1))
        puts("0");
      else {
        int d = (cnt_1 > cnt_2 || (cnt_1 == cnt_2 && d_1 < d_2)) ? d_2 : d_1;
        int m = (d == d_1) ? d_2 : d_1;
        if (d % 2 == 0 && d != 0) {
          bool flag = false;
          for (int i = 1; i < n; i++) {
            if (d == a[i] - a[i - 1] && check(i) == d / 2) {
              cout << 1 << endl;
              cout << a[i - 1] + d / 2 << endl;
              flag = true;
              break;
            }
          }
          if (!flag) puts("0");
        } else
          puts("0");
      }
    } else
      puts("0");
  }
  return 0;
}
