#include <bits/stdc++.h>
using namespace std;
long long a[1000000], s[1000000], ans1, ans2, ans3, ans4, ans5;
long double x1, x2, x3;
int n;
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%lld", &a[i]);
  sort(a + 1, a + n + 1);
  for (int i = 1; i <= n; i++) s[i] = s[i - 1] + a[i];
  for (int i = 1; i <= n; i++) {
    long long l = 0, r = min(i - 1, n - i), mid = (l + r) >> 1, maxx;
    while (l + 1 < r) {
      long long t1 = s[i] - s[i - mid - 1] + s[n] - s[n - mid],
                t2 = s[i] - s[i - mid] + s[n] - s[n - mid + 1],
                t3 = s[i] - s[i - mid - 2] + s[n] - s[n - mid - 1];
      x1 = (long double)(t1) / (mid * 2 + 1);
      x2 = (long double)(t2) / (mid * 2 - 1);
      x3 = (long double)(t3) / (mid * 2 + 3);
      if (x1 > x2) {
        if (x1 > x3) {
          r = mid;
          l = r - 2;
          break;
        } else
          l = mid;
      } else
        r = mid;
      mid = (l + r) >> 1;
    }
    long long t1 = s[i] - s[i - l - 1] + s[n] - s[n - l],
              t2 = s[i] - s[i - r - 1] + s[n] - s[n - r];
    x1 = (long double)(t1) / (l * 2 + 1);
    x2 = (long double)(t2) / (r * 2 + 1);
    if (l + 1 == r)
      if (x1 > x2) r = l;
    maxx = s[i - 1] - s[i - r - 1] + s[n] - s[n - r];
    x1 = ((long double)(maxx + a[i])) / (r * 2 + 1) - a[i];
    x2 = ((long double)(ans1 + ans3)) / ans2 - ans3;
    if (x1 > x2 || ans2 == 0) {
      ans1 = maxx;
      ans2 = r * 2 + 1;
      ans3 = a[i];
      ans5 = i;
    }
  }
  printf("%lld\n", ans2);
  for (int i = ans5; ans5 - i <= ans2 / 2; i--) printf("%lld ", a[i]);
  for (int i = n; n - i < ans2 / 2 - ans4; i--) printf("%lld ", a[i]);
}
