#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 5;
int n, a[maxn];
long long sa[maxn];
double mxs;
int mxt, mxp, mxl;
double skew(int t, int p, int l) {
  double mean = sa[p] - sa[p - l] + sa[n] - sa[n - l];
  if (t == 0) {
    mean += a[p];
    mean /= 2 * l + 1;
    return mean - a[p];
  } else {
    mean += a[p] + a[p + 1];
    mean /= 2 * l + 2;
    return mean - (a[p] + a[p + 1]) / 2.0;
  }
}
void recover() {
  if (mxt == 0) {
    cout << 2 * mxl + 1 << '\n';
    for (int i = 0; i < mxl; i++) {
      cout << a[mxp - 1 - i] << ' ' << a[n - 1 - i] << ' ';
    }
    cout << a[mxp] << '\n';
  } else {
    cout << 2 * mxl + 2 << '\n';
    for (int i = 0; i < mxl; i++) {
      cout << a[mxp - 1 - i] << ' ' << a[n - 1 - i] << ' ';
    }
    cout << a[mxp] << ' ' << a[mxp + 1] << '\n';
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  sort(a, a + n);
  for (int i = 0; i < n; i++) {
    sa[i + 1] = sa[i] + a[i];
  }
  for (int i = 0; i < n; i++) {
    int lo = 0, hi = min(i, n - 1 - i);
    while (lo < hi) {
      int mid = (lo + hi) / 2;
      if (skew(0, i, mid) < skew(0, i, mid + 1)) {
        lo = mid + 1;
      } else {
        hi = mid;
      }
    }
    if (skew(0, i, lo) > mxs) {
      mxs = skew(0, i, lo);
      mxt = 0, mxp = i, mxl = lo;
    }
  }
  for (int i = 0; i < n - 1; i++) {
    int lo = 0, hi = min(i, n - 2 - i);
    while (lo < hi) {
      int mid = (lo + hi) / 2;
      if (skew(1, i, mid) < skew(1, i, mid + 1)) {
        lo = mid + 1;
      } else {
        hi = mid;
      }
    }
    if (skew(1, i, lo) > mxs) {
      mxs = skew(1, i, lo);
      mxt = 1, mxp = i, mxl = lo;
    }
  }
  recover();
  return 0;
}
