#include <string>
#include <iostream>
template<unsigned long long num, unsigned long long npass>
struct Factorial_r {
enum { value = num };
int pass;
Factorial_r() {
Factorial_r<num*(npass-1),npass-1> a;
std::wcout << num << " " << npass << std::endl;
pass = a.pass;
}
};
// Entrance structure
template<unsigned long long n>
struct Factorial{
int value;
Factorial() {
Factorial_r<n*(n-1),n-1> a;
std::wcout << n << std::endl;
value = a.pass;
}
};
template<unsigned long long num>
struct Factorial_r<num,2>
{
enum { value = num };
int pass;
Factorial_r() {
std::wcout << value << " 2" << std::endl;
pass = num;
}
};
int main()
{
Factorial<10> a;
std::wcout << a.value;
char foo[50];
gets(foo);
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dW5zaWduZWQgbG9uZyBsb25nIG51bSwgdW5zaWduZWQgbG9uZyBsb25nIG5wYXNzPgpzdHJ1Y3QgRmFjdG9yaWFsX3IgewoJZW51bSB7IHZhbHVlID0gbnVtIH07CglpbnQgcGFzczsKCUZhY3RvcmlhbF9yKCkgeyAKCQlGYWN0b3JpYWxfcjxudW0qKG5wYXNzLTEpLG5wYXNzLTE+IGE7CgkJc3RkOjp3Y291dCA8PCBudW0gPDwgIiAiIDw8IG5wYXNzIDw8IHN0ZDo6ZW5kbDsKCQlwYXNzID0gYS5wYXNzOwoJfQp9OwoKLy8gRW50cmFuY2Ugc3RydWN0dXJlCnRlbXBsYXRlPHVuc2lnbmVkIGxvbmcgbG9uZyBuPgpzdHJ1Y3QgRmFjdG9yaWFsewoJaW50IHZhbHVlOwoJRmFjdG9yaWFsKCkgewoJCUZhY3RvcmlhbF9yPG4qKG4tMSksbi0xPiBhOwoJCXN0ZDo6d2NvdXQgPDwgbiA8PCBzdGQ6OmVuZGw7CgkJdmFsdWUgPSBhLnBhc3M7Cgl9Cn07CiAKdGVtcGxhdGU8dW5zaWduZWQgbG9uZyBsb25nIG51bT4Kc3RydWN0IEZhY3RvcmlhbF9yPG51bSwyPgp7CgllbnVtIHsgdmFsdWUgPSBudW0gfTsKCWludCBwYXNzOwoJRmFjdG9yaWFsX3IoKSB7CgkJc3RkOjp3Y291dCA8PCB2YWx1ZSA8PCAiIDIiIDw8IHN0ZDo6ZW5kbDsKCQlwYXNzID0gbnVtOwoJfQp9OwoKaW50IG1haW4oKQp7CiAgICAgICAgRmFjdG9yaWFsPDEwPiBhOwoJc3RkOjp3Y291dCA8PCBhLnZhbHVlOwoKCWNoYXIgZm9vWzUwXTsKCWdldHMoZm9vKTsKCXJldHVybiAwOwp9