#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <iostream>
using namespace std;
typedef __gnu_pbds::tree<
int,
__gnu_pbds::null_type,
less<>,
__gnu_pbds::rb_tree_tag,
__gnu_pbds::tree_order_statistics_node_update>
ordered_set;
int main() {
ordered_set X;
for(int i = 1; i<1024; i += i) {
X.insert(i);
}
cout << "Order of key " << endl;
for(int i = 1; i<1024; i += i) {
cout << X.order_of_key(i) << " ";
}
cout << endl << "Get by order " << endl;
for(int i = 0; i < 10; ++i) {
cout << *X.find_by_order(i) << " ";
}
cout << endl;
return 0;
}
I2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZSA8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgX19nbnVfcGJkczo6dHJlZTwKICAgIGludCwKICAgIF9fZ251X3BiZHM6Om51bGxfdHlwZSwKICAgIGxlc3M8PiwKICAgIF9fZ251X3BiZHM6OnJiX3RyZWVfdGFnLAogICAgX19nbnVfcGJkczo6dHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPgogICAgb3JkZXJlZF9zZXQ7CgppbnQgbWFpbigpIHsKICAgIG9yZGVyZWRfc2V0IFg7CiAgICBmb3IoaW50IGkgPSAxOyBpPDEwMjQ7IGkgKz0gaSkgewogICAgICAgIFguaW5zZXJ0KGkpOwogICAgfQoKICAgIGNvdXQgPDwgIk9yZGVyIG9mIGtleSAiIDw8IGVuZGw7CiAgICBmb3IoaW50IGkgPSAxOyBpPDEwMjQ7IGkgKz0gaSkgewogICAgICAgIGNvdXQgPDwgWC5vcmRlcl9vZl9rZXkoaSkgPDwgIiAiOwogICAgfQoKICAgIGNvdXQgPDwgZW5kbCA8PCAiR2V0IGJ5IG9yZGVyICIgPDwgZW5kbDsKCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkgewogICAgICAgIGNvdXQgPDwgKlguZmluZF9ieV9vcmRlcihpKSA8PCAiICI7CiAgICB9CgogICAgY291dCA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9