#include <bits/stdc++.h>
using namespace std;
struct A {
  int f, s, freq;
};
int n, temp, temp1;
A diff, diff1;
map<int, int> mp;
map<int, int>::iterator f, s;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &temp);
    mp[temp]++;
  }
  diff.freq = diff1.freq = 0;
  f = s = mp.begin();
  s++;
  for (; s != mp.end(); f++, s++) {
    temp = s->first - f->first;
    if (temp == diff.s - diff.f)
      diff.freq++;
    else if (temp == diff1.s - diff1.f)
      diff1.freq++;
    else if (diff.freq == 0) {
      diff.f = f->first;
      diff.s = s->first;
      diff.freq++;
    } else if (diff1.freq == 0) {
      diff1.f = f->first;
      diff1.s = s->first;
      diff1.freq++;
    }
  }
  s = f;
  f = mp.begin();
  temp = diff.s - diff.f;
  temp1 = diff1.s - diff1.f;
  if (f->second == n) {
    if (n > 1)
      printf("1\n%d", f->first);
    else
      printf("-1");
    return 0;
  }
  if (diff.freq + diff1.freq != n - 1) {
    printf("0");
    return 0;
  }
  if (diff1.freq == 0) {
    if (diff.freq == 1 && temp % 2 == 0)
      printf("3\n%d %d %d", f->first - temp, f->first + (temp / 2),
             s->first + temp);
    else
      printf("2\n%d %d", f->first - temp, s->first + temp);
  } else {
    if (diff.freq == 1 && temp % 2 == 0 && temp / 2 == temp1)
      printf("1\n%d", diff.f + (temp / 2));
    else if (diff1.freq == 1 && temp1 % 2 == 0 && temp1 / 2 == temp)
      printf("1\n%d", diff1.f + (temp1 / 2));
    else
      printf("0");
  }
  return 0;
}
