#include <bits/stdc++.h>
using namespace std;
inline void R(int &x) {
  char ch = getchar();
  x = 0;
  for (; ch < '0'; ch = getchar())
    ;
  for (; ch >= '0'; ch = getchar()) x = x * 10 + ch - '0';
}
const int N = 100005;
int n, a[N];
int main() {
  R(n);
  for (int i = 1; i <= n; ++i) R(a[i]);
  sort(a + 1, a + n + 1);
  vector<int> ans;
  if (n == 1) {
    puts("-1");
    return 0;
  } else if (n == 2) {
    int d = a[2] - a[1];
    ans.push_back(a[1] - d);
    ans.push_back(a[2] + d);
    if (!(d & 1)) ans.push_back(a[1] + (d >> 1));
  } else {
    int mid = a[2] - a[1], mxd = a[2] - a[1], cnt = 0;
    for (int i = 1; i < n; ++i)
      mid = min(mid, a[i + 1] - a[i]), mxd = max(mxd, a[i + 1] - a[i]);
    for (int i = 1; i < n; ++i)
      if (a[i + 1] - a[i] == mid) ++cnt;
    if (cnt == n - 1) {
      ans.push_back(a[1] - mid);
      ans.push_back(a[n] + mid);
    } else if (cnt == n - 2) {
      if (mxd == mid * 2) {
        for (int i = 1; i < n; ++i)
          if (a[i + 1] - a[i] == mxd) ans.push_back(a[i] + mid);
      }
    }
  }
  sort(ans.begin(), ans.end());
  ans.erase(unique(ans.begin(), ans.end()), ans.end());
  printf("%d\n", (int)ans.size());
  for (int i = 0; i < (int)ans.size(); ++i) printf("%d ", ans[i]);
  return 0;
}
