#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 2e5 + 10;
const long long inf = 0x3f3f3f3f3f3f3f3f;
inline long long read() {
  long long ret = 0;
  char ch = getchar();
  while (ch < '0' || ch > '9') ch = getchar();
  while (ch <= '9' && ch >= '0') {
    ret = ret * 10 + ch - '0';
    ch = getchar();
  }
  return ret;
}
long long n;
long long a[MAXN], sum[MAXN];
signed main() {
  n = read();
  for (long long i = 1; i <= n; i++) a[i] = read();
  sort(a + 1, a + n + 1);
  for (long long i = 1; i <= n; i++) sum[i] = sum[i - 1] + a[i];
  double ans = (-1.0) * inf;
  long long ans_cnt = 0, ans_mid = 0;
  for (long long i = 1; i <= n; i++) {
    long long l = 1, r = min(i - 1, n - i), mid;
    double mmax = (double)(a[i]);
    long long cnt = 0;
    while (l <= r) {
      mid = (l + r) >> 1;
      long long sum1 = sum[i - 1] - sum[i - mid] + sum[n] - sum[n - mid + 1];
      long long sum2 = sum[i - 1] - sum[i - mid - 1] + sum[n] - sum[n - mid];
      if ((double)(sum1 + a[i]) / (double)(2 * mid - 1) <
          (double)(sum2 + a[i]) / (double)(2 * mid + 1)) {
        if ((double)(sum2 + a[i]) / (double)(2 * mid + 1) > mmax) {
          mmax = (double)(sum2 + a[i]) / (double)(2 * mid + 1);
          cnt = mid;
        }
        l = mid + 1;
      } else {
        r = mid - 1;
      }
    }
    if (mmax - double(a[i]) > ans) {
      ans = mmax - (double)(a[i]);
      ans_cnt = cnt;
      ans_mid = i;
    }
  }
  cout << ans_cnt * 2 + 1 << endl;
  for (long long i = ans_mid - ans_cnt; i <= ans_mid; i++) cout << a[i] << " ";
  for (long long i = n - ans_cnt + 1; i <= n; i++) cout << a[i] << " ";
  return 0;
}
