#include <bits/stdc++.h>
using namespace std;
int a[100010];
int main() {
  int n;
  while (scanf("%d", &n) == 1) {
    memset(a, 0, sizeof(0));
    for (int i = 0; i < n; i++) scanf("%d", &a[i]);
    sort(a, a + n);
    int cha = a[n - 1] - a[0];
    if (cha == 0 || cha == 1) {
      printf("%d\n", n);
      for (int i = 0; i < n - 1; i++) printf("%d ", a[i]);
      printf("%d\n", a[n - 1]);
      continue;
    } else {
      int mid = (a[n - 1] + a[0]) / 2;
      int cnt1 = 0, cnt2 = 0, cnt = 0;
      for (int i = 0; i < n; i++) {
        if (a[i] < mid)
          cnt1++;
        else if (a[i] > mid)
          cnt2++;
        else
          cnt++;
      }
      if (cnt / 2 > min(cnt1, cnt2)) {
        int add = cnt / 2;
        if (cnt % 2) {
          printf("%d\n", cnt1 + cnt2 + 1);
          for (int i = 0; i < cnt1 + add; i++) printf("%d ", a[0]);
          printf("%d ", mid);
          for (int i = 0; i < cnt2 + add - 1; i++) printf("%d ", a[n - 1]);
          printf("%d\n", a[n - 1]);
        } else {
          printf("%d\n", cnt1 + cnt2);
          for (int i = 0; i < cnt1 + add; i++) printf("%d ", a[0]);
          for (int i = 0; i < cnt2 + add - 1; i++) printf("%d ", a[n - 1]);
          printf("%d\n", a[n - 1]);
        }
      } else {
        if (cnt1 > cnt2) {
          printf("%d\n", cnt1 - cnt2 + cnt);
          for (int i = 0; i < cnt1 - cnt2; i++) printf("%d ", a[0]);
          for (int i = 0; i < cnt + cnt2 + cnt2 - 1; i++) printf("%d ", mid);
          printf("%d\n", mid);
        } else {
          printf("%d\n", cnt2 - cnt1 + cnt);
          for (int i = 0; i < cnt2 - cnt1; i++) printf("%d ", a[n - 1]);
          for (int i = 0; i < cnt1 + cnt1 + cnt - 1; i++) printf("%d ", mid);
          printf("%d\n", mid);
        }
      }
    }
  }
  return 0;
}
