#include <iostream>
#include <type_traits>
using namespace std;
template<typename T>
struct Allocator
{
typedef T value_type;
Allocator() noexcept {};
template<typename U>
Allocator(const Allocator<U>& other) throw() {};
T* allocate(std::size_t n, const void* hint = 0)
{
return static_cast<T*>(::operator new(n * sizeof(T)));
}
void deallocate(T* ptr, std::size_t n)
{
::operator delete(ptr);
}
};
template <typename T, typename U>
inline bool operator == (const Allocator<T>&, const Allocator<U>&)
{
return true;
}
template <typename T, typename U>
inline bool operator != (const Allocator<T>& a, const Allocator<U>& b)
{
return !(a == b);
}
int main() {
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBBbGxvY2F0b3IKewogICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CgogICAgQWxsb2NhdG9yKCkgbm9leGNlcHQge307CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KICAgIEFsbG9jYXRvcihjb25zdCBBbGxvY2F0b3I8VT4mIG90aGVyKSB0aHJvdygpIHt9OwoKICAgIFQqIGFsbG9jYXRlKHN0ZDo6c2l6ZV90IG4sIGNvbnN0IHZvaWQqIGhpbnQgPSAwKQogICAgewogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4oOjpvcGVyYXRvciBuZXcobiAqIHNpemVvZihUKSkpOwogICAgfQoKICAgIHZvaWQgZGVhbGxvY2F0ZShUKiBwdHIsIHN0ZDo6c2l6ZV90IG4pCiAgICB7CiAgICAgICAgOjpvcGVyYXRvciBkZWxldGUocHRyKTsKICAgIH0KfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgppbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY29uc3QgQWxsb2NhdG9yPFQ+JiwgY29uc3QgQWxsb2NhdG9yPFU+JikKewogICAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgppbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgQWxsb2NhdG9yPFQ+JiBhLCBjb25zdCBBbGxvY2F0b3I8VT4mIGIpCnsKICAgIHJldHVybiAhKGEgPT0gYik7Cn0KCgoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglyZXR1cm4gMDsKfQ==