#include <algorithm>
#include <iostream>
#include <vector>
struct Move
{
bool operator < (const Move&) = delete;
std::string s;
};
template <typename T>
struct Wrapper{
Wrapper(const T & pair): pair_mem(pair) {}
bool operator <(const Wrapper& rhs) const {
return pair_mem.first < rhs.pair_mem.first;
}
T pair_mem;
};
int main() {
std::vector<Wrapper<std::pair<int, Move>>> v{{{5, {"World"}}}, {{0, {"Hi"}}}, {{42, {"World"}}}};
std::sort(v.begin(), v.end());
for (const auto& w : v) {
std::cout << w.pair_mem.first << " " << w.pair_mem.second.s << std::endl;
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RydWN0IE1vdmUKewogICAgYm9vbCBvcGVyYXRvciA8IChjb25zdCBNb3ZlJikgPSBkZWxldGU7CiAgICAKICAgIHN0ZDo6c3RyaW5nIHM7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kc3RydWN0IFdyYXBwZXJ7CiAgICBXcmFwcGVyKGNvbnN0IFQgJiBwYWlyKTogcGFpcl9tZW0ocGFpcikge30KICAgIAogICAgYm9vbCBvcGVyYXRvciA8KGNvbnN0IFdyYXBwZXImIHJocykgY29uc3QgewogICAgICAgIHJldHVybiBwYWlyX21lbS5maXJzdCA8IHJocy5wYWlyX21lbS5maXJzdDsKICAgIH0KICAgIFQgcGFpcl9tZW07Cn07CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6dmVjdG9yPFdyYXBwZXI8c3RkOjpwYWlyPGludCwgTW92ZT4+PiB2e3t7NSwgeyJXb3JsZCJ9fX0sIHt7MCwgeyJIaSJ9fX0sIHt7NDIsIHsiV29ybGQifX19fTsKICAgIAogICAgc3RkOjpzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSk7CiAgICAKICAgIGZvciAoY29uc3QgYXV0byYgdyA6IHYpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgdy5wYWlyX21lbS5maXJzdCA8PCAiICIgPDwgdy5wYWlyX21lbS5zZWNvbmQucyA8PCBzdGQ6OmVuZGw7ICAgCiAgICB9Cn0K