#include <iostream>

template<int N>
constexpr int factorial(){
	return N*factorial<N-1>();
}
template<>
constexpr int factorial<0>(){
	return 1;
}
template<>
constexpr int factorial<1>(){
	return 1;
}
struct factorials{
	constexpr static int tab[9]{factorial<1>(), factorial<2>(), factorial<3>(), factorial<4>(), factorial<5>(), factorial<6>(), factorial<7>(), factorial<8>(), factorial<9>()};
};

int main() {
	for(int i=0; i<9; i++){
		std::cout << factorials::tab[i] << std::endl;
	}
	return 0;
}