#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;
}