#include <iostream>
template <int N>
class Factorial {
public:
enum { Result = N * Factorial<N - 1>::Result };
};
template <>
class Factorial<0> {
public:
enum { Result = 1 };
};
int main() {
std::cout << Factorial<5>::Result << std::endl;
return 0;
}