#include <bits/stdc++.h>
using namespace std;
const int MN = 200111;
long long x[MN], sum[MN];
int n;
long double best;
vector<pair<int, int> > res;
long double f(int k, int med) {
  return (sum[n] - sum[n - k] + sum[med] - sum[med - k - 1]) /
             (long double)(2 * k + 1) -
         x[med];
}
int main() {
  while (scanf("%d", &n) == 1) {
    for (int i = (1), _b = (n); i <= _b; ++i) {
      int a;
      scanf("%d", &a);
      x[i] = a;
    }
    sort(x + 1, x + n + 1);
    for (int i = (1), _b = (n); i <= _b; ++i) sum[i] = sum[i - 1] + x[i];
    best = 0.0;
    res.clear();
    res.push_back(make_pair(1, 1));
    for (int x = (1), _b = (n); x <= _b; ++x) {
      int l = 1, r = min(n - x, x - 1);
      while (l + 10 < r) {
        int mid = (l + r) >> 1;
        if (f(mid, x) > f(mid + 1, x)) {
          r = mid;
        } else
          l = mid;
      }
      for (int i = (l), _b = (r); i <= _b; ++i) {
        long double cur = f(i, x);
        if (cur > best) {
          best = cur;
          res.clear();
          res.push_back(make_pair(x - i, x));
          res.push_back(make_pair(n - i + 1, n));
        }
      }
    }
    int cnt = 0;
    for (auto p : res) cnt += p.second - p.first + 1;
    printf("%d\n", cnt);
    for (auto p : res) {
      for (int i = (p.first), _b = (p.second); i <= _b; ++i) {
        printf("%d ", (int)x[i]);
      }
    }
    puts("");
  }
}
