#include <iostream>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
typedef tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_multiset;
int main() {
indexed_multiset 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(6) != ms.end()) {
ms.erase(6);
ms.insert(4);
}
cout << "Ordered Multiset: ";
for(auto x : ms) cout << x << ' '; cout << '\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGU8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwp0eXBlZGVmIHRyZWU8aW50LCBudWxsX3R5cGUsIGxlc3NfZXF1YWw8aW50PiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4gaW5kZXhlZF9tdWx0aXNldDsKCgppbnQgbWFpbigpIHsKCWluZGV4ZWRfbXVsdGlzZXQgbXM7CiAgICB2ZWN0b3I8aW50PiB2ezEsIDEsIDIsIDIsIDMsIDQsIDUsIDYsIDZ9OwoKICAgIGZvcihpbnQgaSA6IHYpIG1zLmluc2VydChpKTsKCgljb3V0IDw8ICJPcmRlcmVkIE11bHRpc2V0OiAiOwogICAgZm9yKGF1dG8geCA6IG1zKSBjb3V0IDw8IHggPDwgJyAnOyBjb3V0IDw8ICdcbic7CgogICAgY291dCA8PCAiTG93ZXIgYm91bmQgb2YgMjogIiA8PCAqbXMubG93ZXJfYm91bmQoMikgPDwgJ1xuJzsKICAgIGNvdXQgPDwgIlVwcGVyIGJvdW5kIG9mIDI6ICIgPDwgKm1zLnVwcGVyX2JvdW5kKDIpIDw8ICdcbic7CiAgICAKICAgIGlmIChtcy5maW5kKDYpICE9IG1zLmVuZCgpKSB7CiAgICBtcy5lcmFzZSg2KTsKICAgIG1zLmluc2VydCg0KTsKfQoKY291dCA8PCAiT3JkZXJlZCBNdWx0aXNldDogIjsKICAgIGZvcihhdXRvIHggOiBtcykgY291dCA8PCB4IDw8ICcgJzsgY291dCA8PCAnXG4nOwogICAgCiAgICByZXR1cm4gMDsKfQ==