#include <bits/stdc++.h>
using namespace std;
bool F(int M, vector<int> &a, vector<int> &b) {
  int ixl = M - 1;
  int ixr = a.size() - 1;
  int IX = 0;
  b.at(IX++) = a.at(ixr--);
  for (auto i = 0; i < M; i++) {
    if (a.at(ixl) < a.at(ixr)) {
      b.at(IX++) = a.at(ixl--);
      b.at(IX++) = a.at(ixr--);
    } else {
      return false;
    }
  }
  while (M <= ixr) {
    b.at(IX++) = a.at(ixr--);
  }
  return true;
}
int main() {
  int n;
  cin >> n;
  vector<int> a(n, 0);
  for (auto i = 0; i < n; i++) cin >> a.at(i);
  sort(a.begin(), a.end());
  int L = 0;
  int R = (n + 1) / 2;
  vector<int> b(n, 0);
  while (R - L > 1) {
    int M = (L + R) / 2;
    if (F(M, a, b) > 0)
      L = M;
    else
      R = M;
  }
  cout << L << endl;
  if (0 == L) b = a;
  for (auto i = 0; i < n; i++) cout << b.at(i) << ' ';
  cout << endl;
  return 0;
}
