#include <bits/stdc++.h>
using namespace std;
int sc() {
  int i = 0;
  char c = getchar();
  while (c > '9' || c < '0') c = getchar();
  while (c >= '0' && c <= '9') i = i * 10 + c - '0', c = getchar();
  return i;
}
double mx = -1;
int R, L, mid, n;
int a[200200];
long long sum[200200];
double solve(int x, int L) {
  return (double)(sum[x] - sum[x - L - 1] + sum[n] - sum[n - L]) / (2 * L + 1);
}
void cal(int x) {
  int l = 0, r = min(n - x, x - 1);
  while (r - l > 10) {
    int lmid = l + (r - l + 1) / 3;
    int rmid = r - (r - l + 1) / 3;
    double ansl = solve(x, lmid);
    double ansr = solve(x, rmid);
    if (ansr > ansl)
      l = lmid;
    else
      r = rmid;
  }
  for (int i = l; i <= r; i++) {
    double now = solve(x, i) - a[x];
    if (now > mx) mx = now, mid = x, L = i, R = i;
  }
}
int main() {
  n = sc();
  for (int i = 1; i <= n; i++) a[i] = sc();
  sort(a + 1, a + n + 1);
  for (int i = 1; i <= n; i++) sum[i] += sum[i - 1] + a[i];
  for (int i = 1; i <= n; i++) cal(i);
  printf("%d\n", 2 * L + 1);
  for (int i = 1; i <= L; i++) printf("%d %d ", a[mid - i], a[n - i + 1]);
  if (R != L) printf("%d ", a[mid + 1]);
  printf("%d", a[mid]);
  return 0;
}
