水题
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<deque>
using namespace std;
const int inf = 1e5 + 5;
int n, s[inf],cnt;
deque<int> q;
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i++)scanf("%d", &s[i]);
sort(s, s + n + 1);
for(int i=n;i>=1;i--)
{
if(cnt)q.push_front(s[i]),cnt^=1;
else q.push_back(s[i]),cnt^=1;
}
cnt=0;
deque<int>::iterator it;
for(it=q.begin();it!=q.end();it++)
s[++cnt]= *it ;
for(int i=2;i<=n-1;i++)
if(s[i-1]+s[i+1]<=s[i]){cout<<"NO";return 0;}
if(s[n-1]+s[1]<=s[n]){cout<<"NO";return 0;}
cout<<"YES"<<endl;
for (int i = 1; i <= n; i++)cout << s[i] << " ";
return 0;
}