#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int sum = 0, p = 1;
  char ch = getchar();
  while (!(('0' <= ch && ch <= '9') || ch == '-')) ch = getchar();
  if (ch == '-') p = -1, ch = getchar();
  while ('0' <= ch && ch <= '9') sum = sum * 10 + ch - 48, ch = getchar();
  return sum * p;
}
const int maxn = 1e5 + 20;
int n, a[maxn];
inline void init() {
  n = read();
  for (int i = (1), _end_ = (n); i <= _end_; i++) a[i] = read();
  sort(a + 1, a + n + 1);
}
vector<int> solve(vector<int> ve, int x) {
  vector<int> v;
  sort(ve.begin(), ve.end());
  v.push_back(ve[0]);
  for (int i = (1), _end_ = (ve.size() - 1); i <= _end_; i++)
    if (ve[i] != ve[i - 1]) v.push_back(ve[i]);
  for (int i = (0), _end_ = (v.size() - 1); i <= _end_; i++)
    if (v[i] == 0) v.erase(v.begin() + i);
  if (v.empty()) return v;
  if (x >= 262144) {
    v.clear();
    v.resize(100);
    return v;
  }
  int flg = 1;
  for (int i = (0), _end_ = (v.size() - 1); i <= _end_; i++)
    if (v[i] % 2) {
      flg = 0;
      break;
    }
  if (flg) {
    for (int i = (0), _end_ = (v.size() - 1); i <= _end_; i++) v[i] /= 2;
    v = solve(v, x << 1);
    for (int i = (0), _end_ = (v.size() - 1); i <= _end_; i++) v[i] <<= 1;
    return v;
  } else {
    vector<int> h, t;
    h.clear();
    for (int i = (0), _end_ = (v.size() - 1); i <= _end_; i++)
      if (v[i] % 2)
        h.push_back((v[i] + 1) / 2);
      else
        h.push_back(v[i] / 2);
    h = solve(h, x << 1);
    t.clear();
    for (int i = (0), _end_ = (v.size() - 1); i <= _end_; i++)
      if (v[i] % 2)
        t.push_back((v[i] - 1) / 2);
      else
        t.push_back(v[i] / 2);
    t = solve(t, x << 1);
    int z = -1;
    if (h.size() > t.size()) swap(h, t), z = 1;
    for (int i = (0), _end_ = (h.size() - 1); i <= _end_; i++) h[i] <<= 1;
    h.push_back(z);
    return h;
  }
}
inline void doing() {
  vector<int> vec;
  for (int i = (1), _end_ = (n); i <= _end_; i++) vec.push_back(a[i]);
  vector<int> ans;
  ans = solve(vec, 1);
  sort(ans.begin(), ans.end());
  int x = ans.size();
  printf("%d\n", x);
  for (int i = (0), _end_ = (ans.size() - 1); i <= _end_; i++)
    printf("%d ", ans[i]);
}
int main() {
  init();
  doing();
  return 0;
}
