#include <bits/stdc++.h>
using namespace std;
map<long, long> mark;
long n;
long a[100005];
void swap(long vt1, long vt2) {
  long temp = a[vt1];
  a[vt1] = a[vt2];
  a[vt2] = temp;
}
void heap(long dau, long cuoi) {
  long i, j;
  i = dau;
  j = 2 * i;
  while (j <= cuoi) {
    if (j + 1 <= cuoi && a[j] < a[j + 1]) j++;
    if (a[i] < a[j]) {
      swap(i, j);
      i = j;
      j = 2 * i;
    } else
      return;
  }
}
void _sort() {
  long i;
  for (i = n / 2; i >= 1; i--) heap(i, n);
  for (i = n; i >= 1; i--) {
    swap(1, i);
    heap(1, i - 1);
  }
}
void input() {
  long i, j;
  for (i = 1; i <= n; i++) scanf("%ld", &a[i]);
  _sort();
}
int check(int d) {
  int i;
  for (i = 1; i < n; i++)
    if (a[i] + d != a[i + 1]) return 0;
  return 1;
}
int check1(int d) {
  int i, ans;
  ans = -1;
  for (i = 1; i < n; i++) {
    if (a[i] + d != a[i + 1]) {
      if (a[i] + 2 * d == a[i + 1]) {
        if (ans != -1) return 0;
        ans = a[i] + d;
      } else
        return 0;
    }
  }
  printf("1\n%d\n", ans);
  return 1;
}
void solve() {
  int d;
  if (n == 1) {
    printf("-1\n");
    return;
  }
  if (a[1] == a[n]) {
    printf("1\n");
    printf("%d\n", a[1]);
    return;
  }
  if (n == 2 && (a[2] - a[1]) % 2 == 0) {
    printf("3\n");
    printf("%d %d %d\n", a[1] - (a[2] - a[1]), a[1] + (a[2] - a[1]) / 2,
           a[2] + (a[2] - a[1]));
    return;
  }
  d = min(a[2] - a[1], a[n] - a[n - 1]);
  if (check(d) == 1) {
    printf("2\n%d %d\n", a[1] - d, a[n] + d);
    return;
  } else if (check1(d) == 0) {
    printf("0\n");
    return;
  } else {
    return;
  }
  printf("0\n");
}
int main() {
  while (scanf("%ld", &n) > 0) {
    input();
    solve();
  }
  return 0;
}
