#include <iostream>
using namespace std;

template <long N>
struct FACTORIAL{
    static inline long RUN()
    {
        return N * FACTORIAL<N-1>::RUN();
    }
};

template <>
struct FACTORIAL<0>{
    static inline long RUN()
    {
        return 1; 
    }
};

int main()
{
    cout << FACTORIAL<20>::RUN() << endl;

    return 0;
}
