#include <iostream>
#include <unordered_set>
 
struct B
{
   int x, y;
};
 
class A
{
   struct hash
   {
      std::size_t operator()( int const a ) const
      {
         return std::hash<int>()( a );
      }
   };
 
   struct equal_to
   {
      std::size_t operator()( int const a, int const b ) const
      {
         return std::equal_to<int>()( a, b );
      }
   };
 
   public:
      std::unordered_set< int, hash, equal_to > set;
      void push( const B& b )
      {
         set.insert( b.x );
      }
};
int main(int argc, char**)
{
    A a;
    a.push({4, 7});
    a.push({15, 7});
    a.push({15, 7});
    a.push({101, 10});
 
    for (auto i: a.set) std::cout << i << "\n";
}
 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCnN0cnVjdCBCCnsKICAgaW50IHgsIHk7Cn07CgpjbGFzcyBBCnsKICAgc3RydWN0IGhhc2gKICAgewogICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKCBpbnQgY29uc3QgYSApIGNvbnN0CiAgICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6aGFzaDxpbnQ+KCkoIGEgKTsKICAgICAgfQogICB9OwoKICAgc3RydWN0IGVxdWFsX3RvCiAgIHsKICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKSggaW50IGNvbnN0IGEsIGludCBjb25zdCBiICkgY29uc3QKICAgICAgewogICAgICAgICByZXR1cm4gc3RkOjplcXVhbF90bzxpbnQ+KCkoIGEsIGIgKTsKICAgICAgfQogICB9OwoKICAgcHVibGljOgogICAgICBzdGQ6OnVub3JkZXJlZF9zZXQ8IGludCwgaGFzaCwgZXF1YWxfdG8gPiBzZXQ7CiAgICAgIHZvaWQgcHVzaCggY29uc3QgQiYgYiApCiAgICAgIHsKICAgICAgICAgc2V0Lmluc2VydCggYi54ICk7CiAgICAgIH0KfTsKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKikKewogICAgQSBhOwogICAgYS5wdXNoKHs0LCA3fSk7CiAgICBhLnB1c2goezE1LCA3fSk7CiAgICBhLnB1c2goezE1LCA3fSk7CiAgICBhLnB1c2goezEwMSwgMTB9KTsKCiAgICBmb3IgKGF1dG8gaTogYS5zZXQpIHN0ZDo6Y291dCA8PCBpIDw8ICJcbiI7Cn0K