#include <iostream>
int f(int n) {
if (n == 0) return 1;
return n * f(n - 1);
}
int g(int prod, int n) {
if (n == 0) return prod;
return g(n * prod, n - 1);
}
int h(int prod, int n) {
label: /* translation */
if (n == 0)
return prod;
prod = n * prod; /* translation */
n = n - 1; /* translation */
goto label; /* translation */
}
int main() {
std::cout << f(10) << std::endl;
std::cout << g(1, 10) << std::endl;
std::cout << h(1, 10) << std::endl;
return 0;
}
/* end */
I2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IGYoaW50IG4pIHsKICBpZiAobiA9PSAwKSByZXR1cm4gMTsKICByZXR1cm4gbiAqIGYobiAtIDEpOwp9CgppbnQgZyhpbnQgcHJvZCwgaW50IG4pIHsKICBpZiAobiA9PSAwKSByZXR1cm4gcHJvZDsKICByZXR1cm4gZyhuICogcHJvZCwgbiAtIDEpOwp9CgppbnQgaChpbnQgcHJvZCwgaW50IG4pIHsKbGFiZWw6ICAgICAgICAgICAgIC8qIHRyYW5zbGF0aW9uICovCiAgaWYgKG4gPT0gMCkKICAgIHJldHVybiBwcm9kOwogIHByb2QgPSBuICogcHJvZDsgLyogdHJhbnNsYXRpb24gKi8KICBuID0gbiAtIDE7ICAgICAgIC8qIHRyYW5zbGF0aW9uICovCiAgZ290byBsYWJlbDsgICAgICAvKiB0cmFuc2xhdGlvbiAqLwp9CgppbnQgbWFpbigpIHsKICBzdGQ6OmNvdXQgPDwgZigxMCkgPDwgc3RkOjplbmRsOwogIHN0ZDo6Y291dCA8PCBnKDEsIDEwKSA8PCBzdGQ6OmVuZGw7CiAgc3RkOjpjb3V0IDw8IGgoMSwgMTApIDw8IHN0ZDo6ZW5kbDsKICByZXR1cm4gMDsKfQovKiBlbmQgKi8K