#include <iostream>
using namespace std;
template<int a> class T{
class A{
virtual ~A() = 0;
public:
static int f1();
static int f2();
};
class B{
virtual ~B() = 0;
public:
static int f1();
static int f2();
};
public:
void test();
};
template<int a> void T<a>::test(){cout<<a<<A::f1()<<A::f2()<<B::f1()<<B::f2();}
template<int a> int T<a>::A::f1(){return a+1;}
template<int a> int T<a>::A::f2(){return a-1;}
template<int a> int T<a>::B::f1(){return a*2;}
template<int a> int T<a>::B::f2(){return a*3;}
int main() {
T<2> t;
t.test();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8aW50IGE+IGNsYXNzIFR7CgljbGFzcyBBewoJCXZpcnR1YWwgfkEoKSA9IDA7CglwdWJsaWM6CgkJc3RhdGljIGludCBmMSgpOwoJCXN0YXRpYyBpbnQgZjIoKTsKCX07CgljbGFzcyBCewoJCXZpcnR1YWwgfkIoKSA9IDA7CglwdWJsaWM6CgkJc3RhdGljIGludCBmMSgpOwoJCXN0YXRpYyBpbnQgZjIoKTsKCX07CnB1YmxpYzoKCXZvaWQgdGVzdCgpOwp9OwoKdGVtcGxhdGU8aW50IGE+IHZvaWQgVDxhPjo6dGVzdCgpe2NvdXQ8PGE8PEE6OmYxKCk8PEE6OmYyKCk8PEI6OmYxKCk8PEI6OmYyKCk7fQp0ZW1wbGF0ZTxpbnQgYT4gaW50IFQ8YT46OkE6OmYxKCl7cmV0dXJuIGErMTt9CnRlbXBsYXRlPGludCBhPiBpbnQgVDxhPjo6QTo6ZjIoKXtyZXR1cm4gYS0xO30KdGVtcGxhdGU8aW50IGE+IGludCBUPGE+OjpCOjpmMSgpe3JldHVybiBhKjI7fQp0ZW1wbGF0ZTxpbnQgYT4gaW50IFQ8YT46OkI6OmYyKCl7cmV0dXJuIGEqMzt9CgppbnQgbWFpbigpIHsKCVQ8Mj4gdDsKCXQudGVzdCgpOwoJcmV0dXJuIDA7Cn0=