#include <iostream>
template< int n > struct Factoriel {
static const uint64_t value = n * Factoriel< n-1 >::value;
};
template<> struct Factoriel< 1 > {
static const uint64_t value = 1;
};
using namespace std;
int main() {
cout << Factoriel<10>::value, cout << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogICAgIAp0ZW1wbGF0ZTwgaW50IG4gPiBzdHJ1Y3QgRmFjdG9yaWVsIHsKICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCB2YWx1ZSA9IG4gKiAgRmFjdG9yaWVsPCBuLTEgPjo6dmFsdWU7Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBGYWN0b3JpZWw8IDEgPiB7CiAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgdmFsdWUgPSAxOwp9OwogICAgIAogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAgICAKICAgIGludCBtYWluKCkgewogICAgIAogICAgY291dCA8PCBGYWN0b3JpZWw8MTA+Ojp2YWx1ZSwgY291dCA8PCBlbmRsOwogICAgIAogICAgcmV0dXJuIDA7CiAgICB9