#include <iostream>
using namespace std;
typedef unsigned long long int ull;
volatile ull f1(volatile ull i) {return i ? i+f1(i-1) : 0;}
volatile ull f2(volatile ull i, volatile ull r) {
return i ? f2(i-1, i+r) : r;}
void test(ull i) {
cout << "i: " << i << endl;
cout << "f2: " << f2(i, 0) << endl;
cout << "f1: " << f1(i) << endl;
}
int main() {
test(10000);
test(1000000);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWxsOwoKdm9sYXRpbGUgdWxsIGYxKHZvbGF0aWxlIHVsbCBpKSB7cmV0dXJuIGkgPyBpK2YxKGktMSkgOiAwO30KCnZvbGF0aWxlIHVsbCBmMih2b2xhdGlsZSB1bGwgaSwgdm9sYXRpbGUgdWxsIHIpIHsKCXJldHVybiBpID8gZjIoaS0xLCBpK3IpIDogcjt9CgkKdm9pZCB0ZXN0KHVsbCBpKSB7Cgljb3V0IDw8ICJpOiAiIDw8IGkgPDwgZW5kbDsKCWNvdXQgPDwgImYyOiAiIDw8IGYyKGksIDApIDw8IGVuZGw7Cgljb3V0IDw8ICJmMTogIiA8PCBmMShpKSA8PCBlbmRsOwp9CmludCBtYWluKCkgewoJdGVzdCgxMDAwMCk7Cgl0ZXN0KDEwMDAwMDApOwoJcmV0dXJuIDA7Cn0=