#include <iostream>
#include <vector>
using namespace std;
static vector<long long> cache;
long long factorial(long long n){
if (n>cache.size()-1){
cache.push_back(n*factorial(n-1));
}
return cache[n];
}
int main(){
cache.push_back(1);
cache.push_back(1);
cout << factorial(3) << endl;
cout << factorial(4) << endl;
cin.get();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RhdGljIHZlY3Rvcjxsb25nIGxvbmc+IGNhY2hlOwoKbG9uZyBsb25nIGZhY3RvcmlhbChsb25nIGxvbmcgbil7CgogICAgIGlmIChuPmNhY2hlLnNpemUoKS0xKXsKICAgICAgICBjYWNoZS5wdXNoX2JhY2sobipmYWN0b3JpYWwobi0xKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBjYWNoZVtuXTsKfQoKaW50IG1haW4oKXsKICAgIGNhY2hlLnB1c2hfYmFjaygxKTsKICAgIGNhY2hlLnB1c2hfYmFjaygxKTsKICAgIAogICAgY291dCA8PCBmYWN0b3JpYWwoMykgPDwgZW5kbDsKICAgIGNvdXQgPDwgZmFjdG9yaWFsKDQpIDw8IGVuZGw7CiAgICBjaW4uZ2V0KCk7CiAgICByZXR1cm4gMDsKfQo=