#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;++i)
#define all(x) (x).begin(),(x).end()
using namespace std;
const int INF=1145141919,MOD=1e9+7;
const int64_t LINF=8931145141919364364,LMOD=998244353;
// const int dy[]={0,-1,0,1,1,-1,-1,1};
// const int dx[]={1,0,-1,0,1,1,-1,-1};

int main() {
	int n; cin >> n;
	stack<int> st;
	vector<int> ans;
	while(n--) {
		int a; cin >> a;
		if(st.empty()) {
			st.push(a);
			continue;
		}
		if(st.top() > a) {
			st.push(a);
			continue;
		}
		while(st.top() < a) {
			if(st.size() == 1) break;
			ans.push_back(st.top());
			st.pop();
		}
		if(st.top() < a) ans.push_back(a);
		else st.push(a);
	}
	if(st.size() == 1) {
		cout << "Yes" << endl;
		int nn = ans.size();
		for(int i = 0; i < nn; ++i) {
			cout << ans[i] << (i == nn - 1 ? "\n" : " ");
		}
	} else {
		cout << "No" << endl;
	}
	return 0;
}