#include <bits/stdc++.h>
int main() {
  int n, v, p;
  std::set<int> s;
  std::map<int, int> d;
  std::vector<int> r;
  std::scanf("%d", &n);
  for (int i(0); i < n; ++i) {
    std::scanf("%d", &v);
    s.insert(v);
  }
  if (s.size() != n) {
    if (s.size() == 1)
      std::printf("1\n%d\n", *s.begin());
    else
      std::puts("0");
  } else if (s.size() < 2) {
    std::puts("-1");
  } else {
    auto it = s.begin();
    p = *it++;
    while (it != s.end()) {
      d[*it - p]++;
      p = *it++;
    }
    if (d.size() == 1) {
      v = d.begin()->first;
      r.push_back(*s.begin() - v);
      r.push_back(*s.rbegin() + v);
      if (s.size() == 2 && v % 2 == 0) r.push_back(*s.begin() + v / 2);
    } else if (d.size() == 2) {
      if (d.begin()->first * 2 == d.rbegin()->first &&
          d.rbegin()->second == 1) {
        for (int i(*s.begin()); i <= *s.rbegin(); i += d.begin()->first) {
          if (s.find(i) == s.end()) r.push_back(i);
        }
      }
    }
    std::printf("%lu\n", r.size());
    if (!r.empty()) {
      std::sort(r.begin(), r.end());
      for (int i(0); i < r.size(); ++i) {
        if (0 < i) std::printf(" ");
        std::printf("%d", r[i]);
      }
      std::puts("");
    }
  }
  return 0;
}
