#include <iostream>
#include <iterator>
#include <ostream>
#include <set>
struct Point : std::pair<int, int> {
using pair<int, int>::pair;
};
std::ostream& operator<<(std::ostream& o, const Point& p) {
return o << p.first << ' ' << p.second;
}
int main()
{
std::set<Point> s;
s.insert( Point(2,2) );
s.insert( Point(3,3) );
s.insert( Point(2,3) );
s.insert( Point(4,4) );
std::copy(s.begin(), s.end(), std::ostream_iterator<Point>(std::cout, "\n"));
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxvc3RyZWFtPgojaW5jbHVkZSA8c2V0PgogCnN0cnVjdCBQb2ludCA6IHN0ZDo6cGFpcjxpbnQsIGludD4gewoJCiAgIHVzaW5nIHBhaXI8aW50LCBpbnQ+OjpwYWlyOwp9OwogCnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG8sIGNvbnN0IFBvaW50JiBwKSB7CiAgcmV0dXJuIG8gPDwgcC5maXJzdCA8PCAnICcgPDwgcC5zZWNvbmQ7Cn0KCiAKaW50IG1haW4oKQp7CiAgICBzdGQ6OnNldDxQb2ludD4gczsKICAgIHMuaW5zZXJ0KCBQb2ludCgyLDIpICk7CiAgICBzLmluc2VydCggUG9pbnQoMywzKSApOwogICAgcy5pbnNlcnQoIFBvaW50KDIsMykgKTsKICAgIHMuaW5zZXJ0KCBQb2ludCg0LDQpICk7CiAgICBzdGQ6OmNvcHkocy5iZWdpbigpLCBzLmVuZCgpLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8UG9pbnQ+KHN0ZDo6Y291dCwgIlxuIikpOwp9