#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  while (b) {
    a %= b;
    swap(a, b);
  }
  return a;
}
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
bool isprime(long long p) {
  if (p < 2) return false;
  if (p == 2) return true;
  if (p % 2 == 0) return false;
  double limit = sqrt(p);
  for (long long i = 3; i <= limit; i += 2) {
    if ((p % i) == 0) return false;
  }
  return true;
}
long long fac(long long n) {
  long long an = 1;
  while (n > 1) {
    an *= n;
    n--;
  }
  return an;
}
long long kor(long long n, long long st) {
  long long res = 1;
  while (st) {
    if (st & 1) res *= n;
    n *= n;
    st >>= 1;
  }
  return res;
}
int a[100001];
int main() {
  ios::sync_with_stdio(false);
  int n;
  cin >> n;
  for (int i = 0; i < n; ++i) cin >> a[i];
  sort(a, a + n);
  if (a[0] != a[n - 1] - 2) {
    cout << n << "\n";
    for (int i = 0; i < n; ++i) cout << a[i] << " ";
    return 0;
  }
  int fs = 1, ss = 1;
  for (int i = 1; i < n; ++i) {
    if (a[i] == a[i - 1])
      fs++;
    else
      break;
  }
  for (int i = n - 1; i > 0; --i) {
    if (a[i] == a[i - 1])
      ss++;
    else
      break;
  }
  int ans;
  int mn = min(ss, fs);
  int med = n - ss - fs;
  if (med > mn * 2) {
    ans = med - (med % 2);
    fs += med / 2;
    ss += med / 2;
    med = (n - ss - fs) % 2;
  } else {
    ans = mn * 2;
    fs -= mn;
    med += mn * 2;
  }
  cout << n - ans << "\n";
  for (int i = 0; i < n; ++i) {
    if (med-- > 0)
      cout << a[0] + 1;
    else if (fs-- > 0)
      cout << a[0];
    else
      cout << a[n - 1];
    cout << " ";
  }
  return 0;
}
