#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
template<int N>
class aTMP{
public:
enum {
ret = N * aTMP<N-1>::ret
};
};
template<>
class aTMP<0>{
public:
enum {
ret = 1
};
};
long fun(int n) {
long s = 1;
for (int i = 2;i <= n;i++) {
s *= i;
}
return s;
}
int main() {
// cout << aTMP<12>::ret << endl;
// cout << fun(12) << endl;
for (int i = 0;i < 1000000;i++) {
//aTMP<12>::ret; // 0.011~0.012s
fun(12); // 0.044s
}
return 0;
}