#include <bits/stdc++.h>
using namespace std;
vector<int> take, ans;
void go(int p, vector<int> A, int cnt = 0) {
  if (p == 19) {
    if (take.size() < ans.size()) {
      ans = take;
    }
    return;
  }
  vector<int> B, C;
  bool has = false;
  for (int a : A) {
    if (a & 1) {
      has = true;
      B.push_back((a + 1) / 2);
      C.push_back((a - 1) / 2);
    } else {
      B.push_back(a / 2);
      C.push_back(a / 2);
    }
  }
  B.resize(unique(B.begin(), B.end()) - B.begin());
  C.resize(unique(C.begin(), C.end()) - C.begin());
  if (has) {
    ++cnt;
    take.push_back(-(1 << p));
  }
  go(p + 1, B, cnt);
  if (has) {
    take.back() = (1 << p);
  }
  go(p + 1, C, cnt);
  if (has) take.pop_back();
}
int main() {
  ans.resize(25);
  int n;
  scanf("%d", &n);
  vector<int> A(n);
  for (int i = 0; i < n; ++i) {
    scanf("%d", &A[i]);
  }
  sort(A.begin(), A.end());
  go(0, A);
  printf("%d\n", ans.size());
  for (int a : ans) printf("%d ", a);
}
