#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;
}