#include <iostream>
#include <cstring>
using namespace std;
int fib(int n, int mem[])
{
if(mem[n] != 0)
{
return mem[n];
}
if(n <= 2)
return 1;
mem[n] = fib(n-1, mem) + fib(n-2, mem);
return mem[n];
}
int main() {
// your code goes here
int mem[50];
memset(mem, 0, 50*sizeof(int));
cout << fib(30, mem) ;
return 0;
}