#include <bits/stdc++.h>
using namespace std;
int arr[100100];
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
  }
  sort(arr, arr + n);
  if (n == 1) {
    cout << -1;
    return 0;
  }
  if (arr[0] == arr[n - 1]) {
    cout << 1 << endl;
    cout << arr[0];
    return 0;
  }
  map<int, int> mp;
  for (int i = 1; i < n; i++) {
    mp[arr[i] - arr[i - 1]]++;
  }
  if (mp.size() == 1) {
    for (auto x : mp) {
      if (x.first % 2 == 0 && n == 2) {
        cout << 3 << endl;
        cout << arr[0] - x.first << ' ' << (arr[0] + arr[1]) / 2 << ' '
             << arr[n - 1] + x.first;
      } else {
        cout << 2 << endl;
        cout << arr[0] - x.first << ' ' << arr[n - 1] + x.first;
      }
    }
    return 0;
  }
  if (mp.size() == 2) {
    vector<pair<int, int> > vec;
    for (auto i : mp) {
      vec.push_back({i.second, i.first});
    }
    sort(vec.begin(), vec.end());
    if (vec[0].first == 1 && vec[0].second % 2 == 0 &&
        vec[0].second / 2 == vec[1].second) {
      cout << 1 << endl;
      for (int i = 1; i < n; i++) {
        if (arr[i] - arr[i - 1] == vec[0].second) {
          cout << (arr[i] + arr[i - 1]) / 2;
          return 0;
        }
      }
    }
    if (vec[0].first == 1 && vec[1].first == 1 && vec[1].second % 2 == 0 &&
        vec[1].second / 2 == vec[0].second) {
      cout << 1 << endl;
      for (int i = 1; i < n; i++) {
        if (arr[i] - arr[i - 1] == vec[1].second) {
          cout << (arr[i] + arr[i - 1]) / 2;
          return 0;
        }
      }
    }
  }
  cout << 0;
  return 0;
}
