#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { int n; cin >> n; priority_queue,greater> que; vector ans; for (int i = 0; i < n; i++) { int a; cin >> a; bool b = false; int co; if (que.empty()) { que.push(a); } else { while (1) { if (que.empty() || a < que.top()) { if (b) { que.push(co); ans.emplace_back(a); } else { que.push(a); } break; } else if (!b && a > que.top()) { co = que.top(); que.pop(); b = true; continue; } else if (a > que.top()) { ans.emplace_back(que.top()); que.pop(); continue; } } } } if (ans.size() == n - 1) { cout << "Yes" << endl; for (int i = 0; i < n - 1; i++) { cout << ans[i]; if (i != n - 2) { cout << " "; } } cout << endl; } else { cout << "No" << endl; } }