#include <iostream>
auto factorial(int x)
{
auto recursiveFunction = [](auto recFunc, int n) -> int
{
if (n <= 1) return 1;
else return n * recFunc(recFunc, n-1);
};
return recursiveFunction(recursiveFunction, x);
}
int main() {
std::cout << factorial(4) << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKCmF1dG8gZmFjdG9yaWFsKGludCB4KQp7CiAgICBhdXRvIHJlY3Vyc2l2ZUZ1bmN0aW9uID0gW10oYXV0byByZWNGdW5jLCBpbnQgbikgLT4gaW50CiAgICB7CiAgICAgICAgaWYgKG4gPD0gMSkgcmV0dXJuIDE7CiAgICAgICAgZWxzZSByZXR1cm4gbiAqIHJlY0Z1bmMocmVjRnVuYywgbi0xKTsKICAgIH07CiAgICByZXR1cm4gcmVjdXJzaXZlRnVuY3Rpb24ocmVjdXJzaXZlRnVuY3Rpb24sIHgpOwp9CgppbnQgbWFpbigpIHsKCXN0ZDo6Y291dCA8PCBmYWN0b3JpYWwoNCkgPDwgc3RkOjplbmRsOwp9