#include <iostream>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
template<typename T> using ordered_multiset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
// Erase -
// if(os.upper_bound(x)!=os.end())
// os.erase(os.upper_bound(x));
int main() {
ordered_multiset<int>ms;
vector<int> v{1, 1, 2, 2, 3, 4, 5, 6, 6};
for(int i : v) ms.insert(i);
cout << "Ordered Multiset: ";
for(auto x : ms) cout << x << ' '; cout << '\n';
cout << "Lower bound of 2: " << *ms.lower_bound(2) << '\n';
cout << "Upper bound of 2: " << *ms.upper_bound(2) << '\n';
// if (ms.find(12) != ms.end()) {
// ms.erase(6);
// ms.insert(10);
// }
// cout << "Ordered Multiset: ";
// for(auto x : ms) cout << x << ' '; cout << '\n';
cout<<*ms.find(*ms.upper_bound(4))<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGU8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB1c2luZyBvcmRlcmVkX211bHRpc2V0ID0gdHJlZTxULCBudWxsX3R5cGUsIGxlc3NfZXF1YWw8VD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+OwovLyBFcmFzZSAtCi8vIGlmKG9zLnVwcGVyX2JvdW5kKHgpIT1vcy5lbmQoKSkKLy8gICBvcy5lcmFzZShvcy51cHBlcl9ib3VuZCh4KSk7CgoKaW50IG1haW4oKSB7CglvcmRlcmVkX211bHRpc2V0PGludD5tczsKICAgIHZlY3RvcjxpbnQ+IHZ7MSwgMSwgMiwgMiwgMywgNCwgNSwgNiwgNn07CgogICAgZm9yKGludCBpIDogdikgbXMuaW5zZXJ0KGkpOwoKCWNvdXQgPDwgIk9yZGVyZWQgTXVsdGlzZXQ6ICI7CiAgICBmb3IoYXV0byB4IDogbXMpIGNvdXQgPDwgeCA8PCAnICc7IGNvdXQgPDwgJ1xuJzsKCiAgICBjb3V0IDw8ICJMb3dlciBib3VuZCBvZiAyOiAiIDw8ICptcy5sb3dlcl9ib3VuZCgyKSA8PCAnXG4nOwogICAgY291dCA8PCAiVXBwZXIgYm91bmQgb2YgMjogIiA8PCAqbXMudXBwZXJfYm91bmQoMikgPDwgJ1xuJzsKICAgIAovLyAgICAgaWYgKG1zLmZpbmQoMTIpICE9IG1zLmVuZCgpKSB7Ci8vICAgICBtcy5lcmFzZSg2KTsKLy8gICAgIG1zLmluc2VydCgxMCk7Ci8vIH0KCi8vIGNvdXQgPDwgIk9yZGVyZWQgTXVsdGlzZXQ6ICI7Ci8vICAgICBmb3IoYXV0byB4IDogbXMpIGNvdXQgPDwgeCA8PCAnICc7IGNvdXQgPDwgJ1xuJzsKCmNvdXQ8PCptcy5maW5kKCptcy51cHBlcl9ib3VuZCg0KSk8PGVuZGw7CiAgICAKICAgIHJldHVybiAwOwp9