#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<T>, rb_tree_tag, tree_order_statistics_node_update>;
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';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGU8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB1c2luZyBvcmRlcmVkX211bHRpc2V0ID0gdHJlZTxULCBudWxsX3R5cGUsIGxlc3M8VD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+OwoKaW50IG1haW4oKSB7CglvcmRlcmVkX211bHRpc2V0PGludD5tczsKICAgIHZlY3RvcjxpbnQ+IHZ7MSwgMSwgMiwgMiwgMywgNCwgNSwgNiwgNn07CgogICAgZm9yKGludCBpIDogdikgbXMuaW5zZXJ0KGkpOwoKCWNvdXQgPDwgIk9yZGVyZWQgTXVsdGlzZXQ6ICI7CiAgICBmb3IoYXV0byB4IDogbXMpIGNvdXQgPDwgeCA8PCAnICc7IGNvdXQgPDwgJ1xuJzsKCiAgICBjb3V0IDw8ICJMb3dlciBib3VuZCBvZiAyOiAiIDw8ICptcy5sb3dlcl9ib3VuZCgyKSA8PCAnXG4nOwogICAgY291dCA8PCAiVXBwZXIgYm91bmQgb2YgMjogIiA8PCAqbXMudXBwZXJfYm91bmQoMikgPDwgJ1xuJzsKICAgIHJldHVybiAwOwp9