#include #include #include #include #define rep(i,a,b) for(int i=(a);i<(b);i++) #define rrep(i,a,b) for(int i=(b)-1;i>=(a);i--) #define all(x) begin(x),end(x) #define sz(x) (int)(x).size() using namespace std; using namespace atcoder; using ll=long long; using ld=long double; using vll=vector; using vvll=vector; using vi=vector; using vvi=vector; using pll=pair; using pi=pair; using mint=modint998244353; // using mint=modint1000000007; // using mint2=static_modint<2>; // using BoostPoint=boost::polygon::point_data; // using Voronoi=boost::polygon::voronoi_diagram; // using mint=LazyMontgomeryModInt<998244353>; // using vm=vector; // using vvm=vector; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin>>N; vectors,ans; rep(i,0,N){ int a; cin>>a; s.push_back(a); while(sz(s)>=3){ int x=s[sz(s)-3],y=s[sz(s)-2],z=s[sz(s)-1]; if(x>y&&y>z)break; ans.push_back(y); s[sz(s)-2]=z; s.pop_back(); } } if(sz(s)>=3||s[0]>s[1]){ cout<<"No\n"; }else{ cout<<"Yes\n"; rep(i,0,N-2){ cout<