#include <iostream>
using namespace std;
struct A
{
struct B{};
template <typename T>
struct EverythingIsFine
{
using Outer = T;
using Inner = typename T::B::B::B::B::B::B;
};
using ItWillBeOkay = EverythingIsFine<B>; // Ok
using InnerProblem = ItWillBeOkay::Inner; // Not ok
using OuterProblem = decltype(B().ItWillBeOkay::Outer::B::B::B
::B::B::B::~B()); // Not even CLOSE to okay
};
int main() {
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEEKewogICAgc3RydWN0IEJ7fTsKCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgIHN0cnVjdCBFdmVyeXRoaW5nSXNGaW5lCiAgICB7CiAgICAgICAgdXNpbmcgT3V0ZXIgPSBUOwogICAgICAgIHVzaW5nIElubmVyID0gdHlwZW5hbWUgVDo6Qjo6Qjo6Qjo6Qjo6Qjo6QjsKICAgIH07CgogICAgdXNpbmcgSXRXaWxsQmVPa2F5ID0gRXZlcnl0aGluZ0lzRmluZTxCPjsgLy8gT2sKICAgIHVzaW5nIElubmVyUHJvYmxlbSA9IEl0V2lsbEJlT2theTo6SW5uZXI7IC8vIE5vdCBvawogICAgdXNpbmcgT3V0ZXJQcm9ibGVtID0gZGVjbHR5cGUoQigpLkl0V2lsbEJlT2theTo6T3V0ZXI6OkI6OkI6OkIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6Qjo6Qjo6Qjo6fkIoKSk7IC8vIE5vdCBldmVuIENMT1NFIHRvIG9rYXkKfTsKCgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXJldHVybiAwOwp9