#include <bits/stdc++.h>
using namespace std;
template <class t>
inline void rd(t &s) {
  s = 0;
  register char c = getchar();
  while (!isdigit(c)) c = getchar();
  while (isdigit(c)) s = (s << 3) + (s << 1) + (c ^ 48), c = getchar();
  return;
}
int a[200050];
int ans[200050];
inline bool cmp(int a, int b) { return a > b; }
signed main(void) {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> a[i];
  sort(a + 1, a + n + 1, cmp);
  ans[100001] = a[1];
  register int l = 100001, r = 100001;
  for (int i = 2; i <= n; ++i)
    if (i & 1)
      ans[--l] = a[i];
    else
      ans[++r] = a[i];
  for (int i = l + 1; i < r; ++i)
    if (ans[i - 1] + ans[i + 1] <= ans[i]) {
      cout << "NO" << endl;
      return 0;
    }
  if (ans[r - 1] + ans[l] <= ans[r] || ans[l + 1] + ans[r] <= ans[l]) {
    cout << "NO" << endl;
    return 0;
  }
  cout << "YES" << endl;
  for (int i = l; i <= r; ++i) cout << ans[i] << " ";
  return 0;
}
