#include <iostream>
#include <string>
#include <string_view>
namespace N
{
class MyClass
{
std:: string s;
public :
auto begin( ) const { return s.begin ( ) ; }
auto end( ) const { return s.end ( ) ; }
bool f( const std:: string & a_thing) ;
} ;
template < typename T>
bool operator== ( const MyClass& a_mc, const T& a_other)
{
using namespace std;
return std:: equal ( a_mc.begin ( ) , a_mc.end ( ) , begin( a_other) ) ;
}
}
bool N:: MyClass :: f ( const std:: string & a_thing)
{ return a_thing.substr ( 0 ,2 ) == "XY" ; }
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c3RyaW5nX3ZpZXc+CgpuYW1lc3BhY2UgTgp7CmNsYXNzIE15Q2xhc3MKewoJc3RkOjpzdHJpbmcgczsKcHVibGljOgoJYXV0byBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIHMuYmVnaW4oKTsgfQoJYXV0byBlbmQoKSBjb25zdCB7IHJldHVybiBzLmVuZCgpOyB9IAoJYm9vbCBmKGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3RoaW5nKTsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmJvb2wgb3BlcmF0b3I9PShjb25zdCBNeUNsYXNzJiBhX21jLCBjb25zdCBUJiBhX290aGVyKQp7CiAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwogICAgcmV0dXJuIHN0ZDo6ZXF1YWwoYV9tYy5iZWdpbigpLCBhX21jLmVuZCgpLCBiZWdpbihhX290aGVyKSk7Cn0KfQoKYm9vbCBOOjpNeUNsYXNzOjpmKGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3RoaW5nKQp7cmV0dXJuIGFfdGhpbmcuc3Vic3RyKDAsMikgPT0gIlhZIjt9