#include <bits/stdc++.h>
using namespace std;
int jai_shree_ram() { return 1; }
int shree_ganeshay_namah() { return 1; }
long long int power(long long int x, long long int y) {
  long long int r = 1;
  while (y > 0) {
    if (y % 2 != 0) r = (r * x);
    x = (x * x);
    y = y / 2;
  }
  return r;
}
long long int ncr(long long int n, long long int k) {
  long long int c[k + 1];
  memset(c, 0, sizeof(c));
  c[0] = 1;
  for (long long int i = 1; i <= n; i++) {
    for (long long int j = min(i, k); j > 0; j--)
      c[j] = (c[j] % 1000000007 + c[j - 1] % 1000000007) % 1000000007;
  }
  return c[k];
}
bool prime[1001];
void sieve() {
  long long int i, j;
  memset(prime, true, sizeof(prime));
  prime[0] = false;
  prime[1] = false;
  for (i = 2; i <= sqrt(100); i++) {
    if (prime[i]) {
      for (j = i * i; j <= 100; j = j + i) prime[j] = false;
    }
  }
}
void mat_mul(long long int F[2][2], long long int M[2][2]) {
  long long int a =
      ((F[0][0] % 1000000007 * M[0][0] % 1000000007) % 1000000007 +
       (F[0][1] % 1000000007 * M[1][0] % 1000000007) % 1000000007) %
      1000000007;
  long long int b =
      ((F[0][0] % 1000000007 * M[0][1] % 1000000007) % 1000000007 +
       (F[0][1] % 1000000007 * M[1][1] % 1000000007) % 1000000007) %
      1000000007;
  long long int c =
      ((F[1][0] % 1000000007 * M[0][0] % 1000000007) % 1000000007 +
       (F[1][1] % 1000000007 * M[1][0] % 1000000007) % 1000000007) %
      1000000007;
  long long int d =
      ((F[1][0] % 1000000007 * M[0][1] % 1000000007) % 1000000007 +
       (F[1][1] % 1000000007 * M[1][1] % 1000000007) % 1000000007) %
      1000000007;
  F[0][0] = a;
  F[0][1] = b;
  F[1][0] = c;
  F[1][1] = d;
}
void mpower(long long int F[2][2], long long int n) {
  if (n == 0 || n == 1) return;
  long long int M[2][2] = {{1, 1}, {1, 0}};
  mpower(F, n / 2);
  mat_mul(F, F);
  if (n % 2 != 0) mat_mul(F, M);
}
long long int fib_mat(long long int n) {
  long long int F[2][2] = {{1, 1}, {1, 0}};
  if (n == 0) return 0;
  mpower(F, n - 1);
  return F[0][0] % 1000000007;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long int t, n, i, j;
  t = 1;
  while (t--) {
    cin >> n;
    long long int a[n];
    set<long long int> s;
    for (i = 0; i < n; i++) {
      cin >> a[i];
      s.insert(a[i]);
    }
    sort(a, a + n);
    vector<long long int> x, y;
    for (i = n / 2; i < n; i++) y.push_back(a[i]);
    for (i = 0; i < n / 2; i++) x.push_back(a[i]);
    j = s.size();
    j = 0;
    long long int k = 0;
    for (i = 0; i < n; i++) {
      if (i % 2 == 0) {
        a[i] = y[k];
        k++;
      } else {
        a[i] = x[j];
        j++;
      }
    }
    long long int f = 0;
    for (i = 1; i < n - 1; i++) {
      if (a[i] < a[i - 1] && a[i] < a[i + 1]) f++;
    }
    cout << f << "\n";
    for (i = 0; i < n; i++) cout << a[i] << " ";
  }
  return 0;
}
