#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  vector<int> arr(n, 0);
  for (int i = 0; i < n; i++) cin >> arr[i];
  sort(arr.begin(), arr.end());
  vector<int> diff;
  vector<int> ans;
  if (n == 1) {
    cout << -1 << endl;
    return 0;
  }
  if (n == 2) {
    int tl;
    if (arr[1] - arr[0] == 0) {
      cout << 1 << endl;
      cout << arr[0] << endl;
      return 0;
    }
    if ((arr[1] - arr[0]) % 2 == 0) {
      cout << 3 << endl;
      cout << (arr[0] - (arr[1] - arr[0])) << " " << (arr[1] + arr[0]) / 2
           << " " << arr[1] + (arr[1] - arr[0]) << endl;
    } else {
      cout << 2 << endl;
      cout << (arr[0] - (arr[1] - arr[0])) << " " << arr[1] + (arr[1] - arr[0])
           << endl;
    }
    return 0;
  }
  map<int, int> mapx;
  for (int i = 1; i < n; i++) {
    diff.push_back(arr[i] - arr[i - 1]);
    int d = arr[i] - arr[i - 1];
    if (mapx.find(d) != mapx.end()) {
      mapx[d]++;
    } else {
      mapx[d] = 1;
    }
  }
  vector<vector<int> > vx(n, vector<int>(2, 0));
  int l = 0;
  for (auto itr : mapx) {
    vx[l][0] = itr.first;
    vx[l++][1] = itr.second;
  }
  if (mapx.size() > 2) {
    cout << 0 << endl;
    return 0;
  }
  if (mapx.size() == 1) {
    if (vx[0][0] == 0) {
      cout << 1 << endl;
      cout << arr[0] << endl;
      return 0;
    }
    ans.push_back(arr[0] - (arr[2] - arr[1]));
    ans.push_back(arr[n - 1] + (arr[2] - arr[1]));
    cout << ans.size() << endl;
    for (int val : ans) {
      cout << val << " ";
    }
    return 0;
  } else {
    if (vx[1][0] % 2 == 1 || vx[1][0] / 2 != vx[0][0] || vx[1][1] > 1) {
      cout << 0 << endl;
      return 0;
    } else {
      int idx = -1;
      for (int i = 1; i < n; i++) {
        if (idx == -1 && arr[i] - arr[i - 1] == vx[1][0]) {
          idx = i;
          ans.push_back((arr[i] + arr[i - 1]) / 2);
        }
      }
      cout << ans.size() << endl;
      for (int val : ans) {
        cout << val << " ";
      }
    }
    return 0;
  }
}
