#include<stdio.h>
#include<stdlib.h>
#include<string.h>

unsigned long int *slab;

unsigned long int fib(int x){
	if (x < 2) {
		return 1;
	}
	else {
		if(slab[x - 1] == 0)
			slab[x - 1] = fib(x - 1);
		if(slab[x - 2] == 0)
			slab[x - 2] = fib(x - 2);
		return slab[x-1] + slab[x-2];
	}
}

int main(){
	slab = malloc(sizeof(int) * 60);
	memset(slab, 0, sizeof(int) * 60);
	printf("%lu\n", fib(60));
	free(slab);
	return 0;
}