#include <bits/stdc++.h>
using namespace std;
void print_pair(pair<long long, long long> a) {
  cerr << "(" << a.first << ", " << a.second << ") ";
}
template <class S, class T>
std::ostream& operator<<(std::ostream& os, pair<S, T> a) {
  os << "(" << a.first << "," << a.second << ")";
  return os;
}
template <class T>
std::ostream& operator<<(std::ostream& os, vector<T> a) {
  os << "[ ";
  for (int i = 0; i < a.size(); i++) {
    os << a[i] << " ";
  }
  os << " ]";
  return os;
}
long long n;
int main() {
  cin >> n;
  vector<long long> a(n);
  for (int i = 0; i < n; i++) cin >> a[i];
  sort(a.begin(), a.end(), greater<long long>());
  if (a[0] >= a[1] + a[2]) {
    cout << "NO" << endl;
    return 0;
  }
  deque<long long> ans;
  for (int i = 0; i < a.size(); i++) {
    if (i % 2) {
      ans.push_back(a[i]);
    } else {
      ans.push_front(a[i]);
    }
  }
  cout << "YES" << endl;
  for (int i = 0; i < ans.size(); i++) {
    cout << ans[i];
    if (i == ans.size() - 1) {
      cout << endl;
    } else {
      cout << " ";
    }
  }
  return 0;
}
