#include <bits/stdc++.h>
using namespace std;
int n;
long long a[200005];
int tn[200005];
int cur = 1;
long long resum[200005];
const double eps = 1e-11;
const double INF = 1e18;
double getR(int len, long long pos) {
  if (len == 1 || len == 2) return 0;
  int num = len / 2;
  double sum = 0;
  if (pos <= num || pos >= n - num + 1) return -INF;
  sum += resum[pos] - resum[pos - num - 1];
  sum += (resum[n] - resum[n - num]);
  return sum / len - a[pos];
}
double solve(long long l, long long r, long long x) {
  long long mid, midmid;
  while (l + 2 < r) {
    mid = (r - l) / 3 + l;
    midmid = (r - l) / 3 * 2 + l;
    if (getR(tn[mid], x) >= getR(tn[midmid], x))
      r = midmid;
    else
      l = mid;
  }
  long long m = (l + r) / 2;
  double vl = getR(tn[l], x);
  double vm = getR(tn[m], x);
  double vr = getR(tn[r], x);
  if (vl >= vm && vl >= vr) {
    cur = tn[l];
    return vl;
  } else if (vm >= vl && vm >= vr) {
    cur = tn[m];
    return vm;
  } else {
    cur = tn[r];
    return vr;
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &a[i]);
  }
  sort(a + 1, a + 1 + n);
  for (int i = 1; i <= n; i++) {
    resum[i] = resum[i - 1] + a[i];
  }
  int ct = 0;
  for (int i = 1; i <= n; i += 2) {
    tn[++ct] = i;
  }
  double re = -INF;
  int maxl = 1, poss = 1;
  for (int i = 1; i <= n; i++) {
    double t = solve(1, ct, i);
    if (t - re > eps) {
      poss = i;
      re = t;
      maxl = cur;
    }
  }
  printf("%d\n", maxl);
  int num = maxl / 2;
  for (int i = poss - num; i <= poss; i++) {
    printf("%lld ", a[i]);
  }
  for (int i = n - num + 1; i <= n; i++) {
    printf("%lld ", a[i]);
  }
  printf("\n");
  return 0;
}
