#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 {
	static constexpr int tab[9]{factorial<1>(), factorial<2>(), factorial<3>(), factorial<4>(), factorial<5>(), factorial<6>(), factorial<7>(), factorial<8>(), factorial<9>()};
};

constexpr int factorials::tab[];

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