#include <algorithm>
#include <iomanip>
#include <iostream>
using namespace std;
int totalDepth;
int fib_rec(int n, int depth=0)
{
totalDepth = max(totalDepth,depth);
switch(n){
case 0: return 0;
case 1: return 1;
default: return fib_rec(n-1,depth+1)+fib_rec(n-2,depth+1);
}
}
int main()
{
#define DBG(x) { auto ret = (x); cout << left << setw(10) << (ret); cout << "depth:" << totalDepth << endl; }
DBG(fib_rec(1));
DBG(fib_rec(3));
DBG(fib_rec(5));
DBG(fib_rec(7));
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgdG90YWxEZXB0aDsKCmludCBmaWJfcmVjKGludCBuLCBpbnQgZGVwdGg9MCkKewoJdG90YWxEZXB0aCA9IG1heCh0b3RhbERlcHRoLGRlcHRoKTsKCXN3aXRjaChuKXsKCWNhc2UgMDogcmV0dXJuIDA7CgljYXNlIDE6IHJldHVybiAxOwoJZGVmYXVsdDogcmV0dXJuIGZpYl9yZWMobi0xLGRlcHRoKzEpK2ZpYl9yZWMobi0yLGRlcHRoKzEpOwoJfQp9CgppbnQgbWFpbigpCnsKI2RlZmluZSBEQkcoeCkgeyBhdXRvIHJldCA9ICh4KTsgY291dCA8PCBsZWZ0IDw8IHNldHcoMTApIDw8IChyZXQpOyBjb3V0IDw8ICJkZXB0aDoiIDw8IHRvdGFsRGVwdGggPDwgZW5kbDsgfQoKCURCRyhmaWJfcmVjKDEpKTsKCURCRyhmaWJfcmVjKDMpKTsKCURCRyhmaWJfcmVjKDUpKTsKCURCRyhmaWJfcmVjKDcpKTsKfQo=