#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 2;
int n, a[N];
long long pref[N];
int get(int pos) {
  int lo = 0, hi = min(pos - 1, n - pos);
  while (hi - lo > 3) {
    int m1 = (lo + lo + hi) / 3;
    int m2 = (lo + hi + hi) / 3;
    long double r1 = (pref[pos] - pref[pos - m1 - 1] + pref[n] - pref[n - m1]) /
                     double(m1 * 2 + 1);
    long double r2 = (pref[pos] - pref[pos - m2 - 1] + pref[n] - pref[n - m2]) /
                     double(m2 * 2 + 1);
    r1 -= a[pos];
    r2 -= a[pos];
    if (r1 < r2)
      lo = m1;
    else
      hi = m2;
  }
  int ret = lo;
  for (int i = lo; i <= hi; i++) {
    long double r1 =
        (pref[pos] - pref[pos - ret - 1] + (pref[n] - pref[n - ret])) /
        double(ret * 2 + 1);
    long double r2 = (pref[pos] - pref[pos - i - 1] + (pref[n] - pref[n - i])) /
                     double(i * 2 + 1);
    r1 -= a[pos];
    r2 -= a[pos];
    if (r1 < r2) ret = i;
  }
  return ret;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  sort(a + 1, a + n + 1);
  for (int i = 1; i <= n; i++) {
    pref[i] = pref[i - 1] + a[i];
  }
  long double mx = 0;
  pair<int, int> p = {1, 0};
  for (int i = 1; i <= n; i++) {
    int best = get(i);
    long double ret =
        (pref[i] - pref[i - best - 1] + (pref[n] - pref[n - best])) /
        double(best * 2 + 1);
    ret -= a[i];
    if (mx <= ret) {
      mx = ret;
      p = {i, best};
    }
  }
  vector<int> ans;
  for (int i = p.first; i >= (p.first - p.second); i--) ans.push_back(a[i]);
  for (int i = n; i > (n - p.second); i--) ans.push_back(a[i]);
  sort(ans.begin(), ans.end());
  cout << ans.size() << endl;
  for (int i = 0; i < ans.size(); i++) cout << ans[i] << " ";
}
