#include <iostream>
#include <iomanip>
using namespace std;
unsigned long long isFact(unsigned long long N)
{
unsigned long long f = 1;
for(unsigned long long i = 1; f < N; ++i)
{
if ((f *= i) == N) return i;
}
return 0;
}
int main(int argc, const char * argv[])
{
cout << isFact(5039) << endl;
cout << isFact(5040) << endl;
cout << isFact(5041) << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1bnNpZ25lZCBsb25nIGxvbmcgaXNGYWN0KHVuc2lnbmVkIGxvbmcgbG9uZyBOKQp7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgZiA9IDE7CiAgICBmb3IodW5zaWduZWQgbG9uZyBsb25nIGkgPSAxOyBmIDwgTjsgKytpKQogICAgewogICAgICAgIGlmICgoZiAqPSBpKSA9PSBOKSByZXR1cm4gaTsKICAgIH0KICAgIHJldHVybiAwOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKewogICAgY291dCA8PCBpc0ZhY3QoNTAzOSkgPDwgZW5kbDsKICAgIGNvdXQgPDwgaXNGYWN0KDUwNDApIDw8IGVuZGw7CiAgICBjb3V0IDw8IGlzRmFjdCg1MDQxKSA8PCBlbmRsOwp9Cg==