#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC target("sse4")
using namespace std;
int32_t 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());
  if (n == 1) {
    cout << -1;
  } else if (n == 2) {
    if (arr[0] == arr[1]) {
      cout << 1 << "\n";
      cout << arr[0];
    } else {
      if ((arr[1] - arr[0]) & 1) {
        cout << 2 << "\n";
        cout << arr[0] - (arr[1] - arr[0]) << " " << arr[1] + (arr[1] - arr[0]);
      } else {
        cout << 3 << "\n";
        cout << arr[0] - (arr[1] - arr[0]) << " " << (arr[0] + arr[1]) / 2
             << " " << arr[1] + (arr[1] - arr[0]);
      }
    }
  } else {
    int t;
    vector<int> diff(n - 1, 0);
    set<int, greater<int>> co;
    for (int i = 1; i < n; i = i + 1) {
      co.insert(arr[i] - arr[i - 1]);
      diff[i - 1] = arr[i] - arr[i - 1];
    }
    int c = co.size();
    if (c > 2) {
      cout << 0;
    } else if (c == 2) {
      set<int, greater<int>>::iterator ff;
      ff = co.begin();
      if (count(diff.begin(), diff.end(), *ff) -
              count(diff.begin(), diff.end(), *(++ff)) !=
          3 - n) {
        cout << 0;
      } else {
        vector<int>::iterator it;
        it = find(diff.begin(), diff.end(), *co.begin());
        t = it - diff.begin() + 1;
        if (((arr[t] + arr[t - 1]) & 1) || arr[t] == arr[t - 1]) {
          cout << 0;
        } else {
          if ((((arr[t] + arr[t - 1]) / 2) - arr[t - 1]) != *ff) {
            cout << 0;
          } else {
            cout << 1 << "\n";
            cout << (arr[t] + arr[t - 1]) / 2;
          }
        }
      }
    } else {
      if (arr[1] - arr[0] == 0) {
        cout << 1 << "\n";
        cout << arr[0];
      } else {
        cout << 2 << "\n";
        cout << arr[0] - (arr[1] - arr[0]) << " "
             << arr[n - 1] + (arr[1] - arr[0]);
      }
    }
  }
  return 0;
}
