#include <iostream>
template<int I> struct X {
static int const c = 2;
};
template<> struct X<0> {
typedef int c;
};
template<typename T> struct Y {
static int const c = 3;
};
static int const c = 4;
int main() {
std::cout << (Y<X<1> >::c >::c>::c) << '\n';
std::cout << (Y<X< 1>>::c >::c>::c) << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp0ZW1wbGF0ZTxpbnQgST4gc3RydWN0IFggewogIHN0YXRpYyBpbnQgY29uc3QgYyA9IDI7Cn07CnRlbXBsYXRlPD4gc3RydWN0IFg8MD4gewogIHR5cGVkZWYgaW50IGM7Cn07CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBZIHsKICBzdGF0aWMgaW50IGNvbnN0IGMgPSAzOwp9OwpzdGF0aWMgaW50IGNvbnN0IGMgPSA0OwppbnQgbWFpbigpIHsKICBzdGQ6OmNvdXQgPDwgKFk8WDwxPiA+OjpjID46OmM+OjpjKSA8PCAnXG4nOwogIHN0ZDo6Y291dCA8PCAoWTxYPCAxPj46OmMgPjo6Yz46OmMpIDw8ICdcbic7Cn0=