#include <iostream>
template<class T>struct identity{using type=T;};
template <typename T, template<class>class Z=identity>
struct Yin {
template<class U>using Z_t=typename Z<U>::type;
Z_t<T> *m_ptr;
};
template <typename T, template<class>class Z=identity>
struct Yang {
template<class U>using Z_t=typename Z<U>::type;
Z_t<T> *m_ptr;
};
template<
template<class, template<class>class>class Yin,
template<class, template<class>class>class Yang
>
struct flopper {
template<class T> struct flip {
using type = Yang<T, flopper<Yang, Yin>::template flip>;
};
};
using ying = Yin< void, flopper<Yin, Yang>::template flip >;
using yang = Yang< void, flopper<Yang, Yin>::template flip >;
int main() {
ying a = {nullptr};
yang b = {&a};
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKICAgIHRlbXBsYXRlPGNsYXNzIFQ+c3RydWN0IGlkZW50aXR5e3VzaW5nIHR5cGU9VDt9OwoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0ZW1wbGF0ZTxjbGFzcz5jbGFzcyBaPWlkZW50aXR5PgogICAgc3RydWN0IFlpbiB7CiAgICAgIHRlbXBsYXRlPGNsYXNzIFU+dXNpbmcgWl90PXR5cGVuYW1lIFo8VT46OnR5cGU7CiAgICAgIFpfdDxUPiAqbV9wdHI7CiAgICB9OwoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0ZW1wbGF0ZTxjbGFzcz5jbGFzcyBaPWlkZW50aXR5PgogICAgc3RydWN0IFlhbmcgewogICAgICB0ZW1wbGF0ZTxjbGFzcyBVPnVzaW5nIFpfdD10eXBlbmFtZSBaPFU+Ojp0eXBlOwogICAgICBaX3Q8VD4gKm1fcHRyOwogICAgfTsKCiAgICB0ZW1wbGF0ZTwKICAgICAgdGVtcGxhdGU8Y2xhc3MsIHRlbXBsYXRlPGNsYXNzPmNsYXNzPmNsYXNzIFlpbiwKICAgICAgdGVtcGxhdGU8Y2xhc3MsIHRlbXBsYXRlPGNsYXNzPmNsYXNzPmNsYXNzIFlhbmcKICAgID4KICAgIHN0cnVjdCBmbG9wcGVyIHsKICAgICAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGZsaXAgewogICAgICAgIHVzaW5nIHR5cGUgPSBZYW5nPFQsIGZsb3BwZXI8WWFuZywgWWluPjo6dGVtcGxhdGUgZmxpcD47CiAgICAgIH07CiAgICB9OwoKICAgIHVzaW5nIHlpbmcgPSBZaW48IHZvaWQsIGZsb3BwZXI8WWluLCBZYW5nPjo6dGVtcGxhdGUgZmxpcCA+OwogICAgdXNpbmcgeWFuZyA9IFlhbmc8IHZvaWQsIGZsb3BwZXI8WWFuZywgWWluPjo6dGVtcGxhdGUgZmxpcCA+OwoKCmludCBtYWluKCkgewoJeWluZyBhID0ge251bGxwdHJ9OwoJeWFuZyBiID0geyZhfTsKCQoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJcmV0dXJuIDA7Cn0=