#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8aW50IE4+CmNvbnN0ZXhwciBpbnQgZmFjdG9yaWFsKCkgewoJcmV0dXJuIE4qZmFjdG9yaWFsPE4tMT4oKTsKfQoKdGVtcGxhdGU8Pgpjb25zdGV4cHIgaW50IGZhY3RvcmlhbDwwPigpIHsKCXJldHVybiAxOwp9Cgp0ZW1wbGF0ZTw+CmNvbnN0ZXhwciBpbnQgZmFjdG9yaWFsPDE+KCkgewoJcmV0dXJuIDE7Cn0KCnN0cnVjdCBmYWN0b3JpYWxzIHsKCXN0YXRpYyBjb25zdGV4cHIgaW50IHRhYls5XXtmYWN0b3JpYWw8MT4oKSwgZmFjdG9yaWFsPDI+KCksIGZhY3RvcmlhbDwzPigpLCBmYWN0b3JpYWw8ND4oKSwgZmFjdG9yaWFsPDU+KCksIGZhY3RvcmlhbDw2PigpLCBmYWN0b3JpYWw8Nz4oKSwgZmFjdG9yaWFsPDg+KCksIGZhY3RvcmlhbDw5PigpfTsKfTsKCmNvbnN0ZXhwciBpbnQgZmFjdG9yaWFsczo6dGFiW107CgppbnQgbWFpbigpIHsKCWZvcihpbnQgaT0wOyBpPDk7IGkrKykgewoJCXN0ZDo6Y291dCA8PCBmYWN0b3JpYWxzOjp0YWJbaV0gPDwgc3RkOjplbmRsOwoJfQoJcmV0dXJuIDA7Cn0=