#include <cstdio>

template<int N> class Factorial
{
public:
static int const vl = N * Factorial<N - 1>::vl;
};

template<> class Factorial<1>
{
public:
static int const vl = 1;
};

template<int N> class FactorialSum
{
public:
static int const vl = Factorial<N>::vl + FactorialSum<N - 1>::vl;
};

template<> class FactorialSum<1>
{
public:
static int const vl = Factorial<1>::vl;
};

void main()
{
int const N = 7;
printf("%d的阶乘:%d\n", N, Factorial<N>::vl);
printf("%d的阶乘之和:%d\n", N, FactorialSum<N>::vl);
}