#include <bits/stdc++.h>
using namespace std;
int n;
int a[200000 + 9];
long long com[200000 + 9];
double f1(int i, int k) {
  long long sum1 = a[i] + com[n] - com[n - k] + com[i - 1] - com[i - 1 - k];
  double av1 = (double)sum1 / (2 * k + 1);
  return av1;
}
double f2(int i, int k) {
  long long sum2 =
      a[i] + com[n] - com[n - (k - 1)] + com[i - 1] - com[i - 1 - (k - 1)];
  double av2 = (double)sum2 / (2 * (k - 1) + 1);
  return av2;
}
long long ValAt(int i, int k) {
  long long sum = a[i] + com[n] - com[n - k] + com[i - 1] - com[i - 1 - k];
  return sum;
}
int main() {
  cin.tie(0);
  cin.sync_with_stdio(0);
  cin >> n;
  for (int i = (1); i <= (n); i++) cin >> a[i];
  sort(a + 1, a + n + 1);
  if (n <= 2) {
    cout << n << '\n';
    for (int i = (1); i <= (n); i++) cout << a[i] << " ";
    cout << '\n';
    return 0;
  }
  com[0] = 0;
  for (int i = (1); i <= (n); i++) com[i] = com[i - 1] + a[i];
  double bestVal = 0;
  int besti = 1, bestSize = 1;
  for (int i = 2; i < n; i++) {
    int s = 1, e = min(i - 1, n - i);
    double bestAv = 0;
    int size;
    while (s <= e) {
      int k = (s + e) / 2;
      long long sum1 = ValAt(i, k);
      double av1 = (double)sum1 / (2 * k + 1);
      long long sum2 = ValAt(i, k - 1);
      double av2 = (double)sum2 / (2 * (k - 1) + 1);
      if (av1 > av2) {
        s = k + 1;
        bestAv = av1;
        size = 2 * k + 1;
      } else
        e = k - 1;
    }
    double val = bestAv - a[i];
    if (val > bestVal) {
      bestVal = val;
      besti = i;
      bestSize = size;
    }
  }
  vector<int> v;
  v.push_back(a[besti]);
  int k = (bestSize - 1) / 2;
  for (int i = besti - 1; i >= besti - k; i--) v.push_back(a[i]);
  for (int i = n; i > n - k; i--) v.push_back(a[i]);
  sort(v.begin(), v.end());
  cout << bestSize << '\n';
  for (auto x : v) cout << x << " ";
  cout << '\n';
  return 0;
}
