#include <bits/stdc++.h>
using namespace std;
const long double eps = 1e-9;
const int inf = (1 << 30) - 1;
const long long inf64 = ((long long)1 << 62) - 1;
const long double pi = acos(-1);
template <class T>
T sqr(T x) {
  return x * x;
}
template <class T>
T abs(T x) {
  return x < 0 ? -x : x;
}
const int MAXN = 220 * 1000;
long long a[MAXN], sum[MAXN];
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
  }
  sort(a, a + n);
  a[n] = 1000 * 1000 * 1000;
  sum[0] = 0;
  for (int i = 0; i <= n; ++i) {
    sum[i + 1] = sum[i] + a[i];
  }
  double best = -1;
  int ind_i = 0, ind_k = 0;
  for (int i = 0; i < n; ++i) {
    int l = 0, r = min(i, n - i - 1);
    while (l < r) {
      int m = (l + r + 1) / 2;
      if ((sum[n] - sum[n - m] + sum[i] - sum[i - m] - 2 * m * a[i]) *
              (2 * m - 1) >
          (sum[n] - sum[n - m + 1] + sum[i] - sum[i - m + 1] -
           2 * (m - 1) * a[i]) *
              (2 * m + 1)) {
        l = m;
      } else {
        r = m - 1;
      }
    }
    if (r > 0 &&
        best < (sum[n] - sum[n - r] + sum[i] - sum[i - r] - 2 * r * a[i]) /
                   (2 * r + 1.0)) {
      best = (sum[n] - sum[n - r] + sum[i] - sum[i - r] - 2 * r * a[i]) /
             (2 * r + 1.0);
      ind_i = i;
      ind_k = r;
    }
  }
  cout << 2 * ind_k + 1 << endl;
  for (int i = 0; i < ind_k; ++i) {
    cout << a[ind_i - ind_k + i] << " ";
  }
  cout << a[ind_i];
  for (int i = 0; i < ind_k; ++i) {
    cout << " " << a[n - ind_k + i];
  }
  cout << endl;
  return 0;
}
