#include <iostream>
using namespace std;
template<unsigned int N>
class Factorial
{
public:
static const int value = Factorial<N-1>::value*N;
};
template<>
class Factorial<0>
{
public:
static const int value = 1;
};
int main()
{
cout << Factorial<5>::value << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPHVuc2lnbmVkIGludCBOPgpjbGFzcyBGYWN0b3JpYWwKewpwdWJsaWM6CiAgICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gRmFjdG9yaWFsPE4tMT46OnZhbHVlKk47Cn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIEZhY3RvcmlhbDwwPgp7CnB1YmxpYzoKICAgIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxOwp9OwoKCmludCBtYWluKCkKewogICAgY291dCA8PCBGYWN0b3JpYWw8NT46OnZhbHVlIDw8IGVuZGw7Cn0KCg==