#include <iostream>

template <int i>
class fact {
public:
  static const int val = i * fact<i - 1>::val;
};

class fact<1> {
public:
  static const int val = 1;
};

int main() {
  cout << fact<1>::val << endl;
  cout << fact<2>::val << endl;
  cout << fact<5>::val << endl;
  return 0;
}

