#include <iostream>
#include <type_traits>
template<unsigned n, unsigned product = 1>
struct Factorial:
std::conditional_t< n == 1, std::integral_constant<unsigned, product>,
Factorial<n - 1, n * product>>
{};
int main() {
std::cout << Factorial<10>::value << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+Cgp0ZW1wbGF0ZTx1bnNpZ25lZCBuLCB1bnNpZ25lZCBwcm9kdWN0ID0gMT4Kc3RydWN0IEZhY3RvcmlhbDoKICAgIHN0ZDo6Y29uZGl0aW9uYWxfdDwgbiA9PSAxLCBzdGQ6OmludGVncmFsX2NvbnN0YW50PHVuc2lnbmVkLCBwcm9kdWN0PiwKICAgIEZhY3RvcmlhbDxuIC0gMSwgbiAqIHByb2R1Y3Q+Pgp7fTsKCmludCBtYWluKCkgewogICAgc3RkOjpjb3V0IDw8IEZhY3RvcmlhbDwxMD46OnZhbHVlIDw8ICJcbiI7Cn0=