#include <bits/stdc++.h>
using namespace std;
vector<string> split(const string& s, char c) {
  vector<string> v;
  stringstream ss(s);
  string x;
  while (getline(ss, x, c)) v.emplace_back(x);
  return move(v);
}
void err(vector<string>::iterator it) {}
template <typename T, typename... Args>
void err(vector<string>::iterator it, T a, Args... args) {
  cerr << it->substr((*it)[0] == ' ', it->length()) << " = " << a << '\n';
  err(++it, args...);
}
int main() {
  int n;
  cin >> n;
  vector<int> arr(n);
  map<int, int> x;
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
    x[arr[i]] = 1;
  }
  int m = 0;
  vector<int> ans(3);
  for (int i = 0; i < n; i++) {
    int curr = 0;
    int l, r;
    while (curr <= 31) {
      l = arr[i] - (1 << curr);
      r = arr[i] + (1 << curr);
      int p = 1;
      if (x.find(l) != x.end()) p++;
      if (x.find(r) != x.end()) p++;
      if (p == 3) {
        ans[0] = arr[i];
        ans[1] = l;
        ans[2] = r;
        m = 3;
        break;
      } else if (p == 2) {
        if (p > m) {
          ans[0] = arr[i];
          if (x.find(l) != x.end())
            ans[1] = l;
          else if (x.find(r) != x.end())
            ans[1] = r;
          m = p;
        }
      } else if (p > m) {
        ans[0] = arr[i];
        m = 1;
      }
      curr++;
    }
    if (m == 3) break;
  }
  if (m == 3)
    cout << 3 << endl << ans[0] << " " << ans[1] << " " << ans[2] << endl;
  else if (m == 2)
    cout << 2 << endl << ans[0] << " " << ans[1] << endl;
  else
    cout << 1 << endl << ans[0] << endl;
  return 0;
}
