#include #include #include using namespace std; int main(){ int n; cin >> n; vector v(n); for(int i = 0; i < n; i++) cin >> v[i]; vector used(n, 0); stack s; int pos = n-1, val = 1; vector ret; while(val != n){ if(used[val-1]){ val++; continue; } while(v[pos] != val){ s.push(v[pos]); used[v[pos--]-1] = true; } used[v[pos]-1] = true; if(s.empty()){ cout << "No" << endl; return 0; } while(s.size() != 1){ ret.push_back(s.top()); s.pop(); } ret.push_back(v[pos--]); val++; } if(ret.size() != n-1){ cout << "No" << endl; }else{ cout << "Yes" << endl; for(int i = 0; i < n-1; i++) cout << ret[i] << " \n"[i==n-2]; } return 0; }