def reverse_factorial(num):
try:
float(num)
except:
return None
i = 2
if num == abs(num):
j = 1
else:
j = -1
num = abs(num)
while num > 1:
num /= i
i += 1
return j*i-1 if num == 1 else None
for num in [3628800,479001600,6,18,"a",1.2,-24]:
rev_fac = reverse_factorial(num)
print(num," NONE") if rev_fac is None else print(num," = ",rev_fac,"!",sep="")
ZGVmIHJldmVyc2VfZmFjdG9yaWFsKG51bSk6CiAgICB0cnk6CiAgICAgICAgZmxvYXQobnVtKQogICAgZXhjZXB0OgoJICAgIHJldHVybiBOb25lCiAgICBpID0gMgogICAgaWYgbnVtID09IGFicyhudW0pOgogICAgICAgIGogPSAxCiAgICBlbHNlOgogICAgICAgIGogPSAtMQogICAgICAgIG51bSA9IGFicyhudW0pCiAgICB3aGlsZSBudW0gPiAxOgogICAgICAgIG51bSAvPSBpCiAgICAgICAgaSArPSAxCiAgICByZXR1cm4gaippLTEgaWYgbnVtID09IDEgZWxzZSBOb25lCgpmb3IgbnVtIGluIFszNjI4ODAwLDQ3OTAwMTYwMCw2LDE4LCJhIiwxLjIsLTI0XToKICAgIHJldl9mYWMgPSByZXZlcnNlX2ZhY3RvcmlhbChudW0pCiAgICBwcmludChudW0sIiBOT05FIikgaWYgcmV2X2ZhYyBpcyBOb25lIGVsc2UgcHJpbnQobnVtLCIgPSAiLHJldl9mYWMsIiEiLHNlcD0iIik=