#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using pld = pair<ld, ld>;
using vi = vector<int>;
using vld = vector<ld>;
using vll = vector<ll>;
int n;
int a[200005];
ll pa[200005];
void buildpa() {
  pa[0] = a[0];
  for (int i = 1; i < n; ++i) {
    pa[i] = a[i] + pa[i - 1];
  }
}
ll get(int l, int r) {
  if (l > r) return 0;
  ll ans = pa[r];
  if (l) ans -= pa[l - 1];
  return ans;
}
ld mean(int i, int d) {
  ll sum = a[i] + get(i - d, i - 1) + get(n - d, n - 1);
  return (ld)sum / (2 * d + 1);
}
void solve() {
  sort(a, a + n);
  buildpa();
  ld ans = -1000000000;
  pii ansp = {-1, -1};
  for (int i = 0; i < n; ++i) {
    int maxd = min(i, n - i - 1);
    int l = 1;
    int r = maxd;
    int bestd = maxd;
    while (l <= r) {
      int m = (l + r) / 2;
      ld diff = mean(i, m + 1) - mean(i, m);
      if (diff < 0) {
        bestd = m;
        r = m - 1;
      } else {
        l = m + 1;
      }
    }
    ld val = mean(i, bestd) - a[i];
    if (val > ans) {
      ans = val;
      ansp = {i, bestd};
    }
  }
  int len = 1 + 2 * ansp.second;
  printf("%d\n", len);
  printf("%d ", a[ansp.first]);
  for (int i = ansp.first - ansp.second; i < ansp.first; ++i) {
    printf("%d ", a[i]);
  }
  for (int i = n - ansp.second; i < n; ++i) {
    printf("%d ", a[i]);
  }
  printf("\n");
}
void read() {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    scanf("%d", &a[i]);
  }
}
int main() {
  read();
  solve();
}
