#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;
    }