#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(0);
  ;
  int n;
  bool allSame = true;
  cin >> n;
  int a[n];
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    if (i > 0 and a[i] != a[i - 1]) allSame = false;
  }
  sort(a, a + n);
  if (n == 1) {
    cout << "-1";
    return 0;
  }
  if (allSame) {
    cout << "1\n" << a[0];
    return 0;
  }
  if (n == 2) {
    if ((a[0] + a[1]) % 2 != 0)
      cout << "2\n" << a[0] - (a[1] - a[0]) << " " << a[1] + (a[1] - a[0]);
    else
      cout << "3\n"
           << a[0] - (a[1] - a[0]) << " " << (a[0] + a[1]) / 2 << " "
           << a[1] + (a[1] - a[0]);
    return 0;
  }
  if (n == 3) {
    int d1 = a[1] - a[0], d2 = a[2] - a[1];
    if (d1 == d2) {
      cout << "2\n" << a[0] - d1 << " " << a[2] + d1;
      return 0;
    } else if (d1 == 2 * d2) {
      cout << "1\n" << a[0] + d1 / 2;
      return 0;
    } else if (2 * d1 == d2) {
      cout << "1\n" << a[1] + d2 / 2;
      return 0;
    }
  }
  set<int> uniq;
  multiset<int> freq;
  for (int i = 1; i < n; i++) {
    uniq.insert(a[i] - a[i - 1]);
    freq.insert(a[i] - a[i - 1]);
  }
  if (uniq.size() == 1) {
    cout << "2\n" << a[0] - *uniq.begin() << " " << a[n - 1] + *uniq.begin();
    return 0;
  } else if (uniq.size() == 2) {
    int d1 = *uniq.begin();
    int f1 = freq.erase(d1);
    uniq.erase(d1);
    int d2 = *uniq.begin();
    int f2 = freq.erase(d2);
    int d = f1 > f2 ? d1 : d2;
    if (f1 > 1 and f2 > 1) {
      cout << "0";
      return 0;
    }
    if (d1 == 0 or d2 == 0) {
      cout << "0";
      return 0;
    }
    for (int i = 1; i < n; i++) {
      if (a[i] - a[i - 1] == 2 * d) {
        cout << "1\n" << a[i - 1] + d;
        return 0;
      }
    }
  }
  cout << "0";
}
