#include <bits/stdc++.h>
using namespace std;
long long int a[200007];
long long int c[50], d[50];
long long int ans = 1, l1, l2, n;
inline int pd(int x) {
  int id = lower_bound(a + 1, a + n + 1, x) - a;
  if (a[id] == x && id <= n)
    return 1;
  else
    return 0;
}
inline long long int read() {
  long long int x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  return x * f;
}
inline void writ(long long int x) {
  if (x < 0) putchar('-'), x = -x;
  if (x > 9) writ(x / 10);
  putchar(x % 10 + '0');
}
inline void write(long long int x) {
  writ(x);
  putchar(' ');
}
int main() {
  n = read();
  c[0] = 1;
  for (int i = 1; i <= 31; ++i) c[i] = c[i - 1] << 1;
  for (int i = 1; i <= n; ++i) a[i] = read();
  sort(a + 1, a + n + 1);
  for (int i = 1; i <= n; ++i) {
    for (int j = 0; j <= 30; ++j) {
      long long int x = a[i] + c[j], y = a[i] + c[j + 1];
      if (pd(x) && pd(y)) {
        write(3);
        putchar('\n');
        write(a[i]), write(x), write(y);
        return 0;
      }
      if (pd(x)) {
        ans = 2;
        l1 = a[i], l2 = x;
      }
      if (pd(y)) {
        ans = 2;
        l1 = a[i], l2 = y;
      }
    }
  }
  writ(ans);
  putchar('\n');
  if (ans == 1)
    write(a[1]);
  else
    write(l1), write(l2);
  return 0;
}
