//#include <stdio.h>
//
//int n, k, d[1010];
//int lower_bound(int k)
//{
// for (int i = 1; i <= n; i++)
// {
// if (d[i] >= k )
// {
// return i;
// }
// }
// return n + 1;
//}
//int main()
//{
// scanf("%d", &n);
//
// for(int i=1; i<=n; i++)
// scanf("%d", &d[i]);
//
// scanf("%d", &k);
//
// printf("%d\n", lower_bound(k));
//}
//#include <stdio.h>
//
//int n, k, d[1010];
//int upper_bound(int k)
//{
// for (int i = 1; i <= n; i++)
// {
// if (d[i] > k)
// {
// return i;
// }
// }
// return n + 1;
//}
////이 부분에 들어가야 될 코드를 작성하여 제출
//int main()
//{
// scanf("%d", &n);
//
// for(int i=1; i<=n; i++)
// scanf("%d", &d[i]);
//
// scanf("%d", &k);
//
// printf("%d\n", upper_bound(k));
//}
//#include <stdio.h>
//
//int n, d[110];
//
//
//int f()
//{
// int i, k, p=1;
// k = d[0];
// for (i = 0; i < n; i++)
// {
// if (d[i] > k)
// {
// k = d[i];
// p = i+1;
// }
// }
// return p;
//}
//int main()
//{
// scanf("%d", &n);
//
// for(int i=0; i<n; i++)
// scanf("%d", &d[i]);
//
// printf("%d", f());
// return 0;
//}
//#include <stdio.h>
//
//long long int n;
//
//
//
//int sqrt(long long int k)
//{
// if(k==0) return 0;
// for (long long int i = 0; ; i++)
// {
// if (i * i > k)
// {
// return (int)(i-1);
// }
// }
//}
///*
//0 > 0 ~ 0
//1 > 0 ~ 1
//*/
//int main()
//{
// scanf("%lld", &n);
// printf("%d\n", sqrt(n));
// return 0;
//}
//#include <stdio.h>
//
//int a, n;
//long long int pow(a, n)
//{
// long long int x=1;
// if(a ==0) return 0;
// if(a == 1) return 1;
// if(a == -1) {
// if(n%2==0) {
// return 1;
// }
// else {
// return -1;
// }
// }
//
// for (int i = 1; i <= n; i++)
// {
// x= x*a;
// }
// return x;
//}
//int main()
//{
// scanf("%d%d", &a, &n);
// printf("%lld\n", pow(a, n));
//}
/*
#include <stdio.h>
int n;
int number(int n)
{
int a=0;
while(n>0)
{
a+=n%10;
n=n/10;
}
return a;
}
int main()
{
scanf("%d", &n);
n = number(n);
while (n >= 10)
{
n = number(n);
}
printf("%d", n);
return 0;
}*/
//#include <stdio.h>
//
//int main()
//{
// int w,h,arr[101][101], n,l,d,x,y,i,j;
// scanf("%d %d %d", &h,&w,&n);
// for(i=0; i<n; i++)
// {
// scanf("%d %d %d %d", &l, &d, &x, &y);
// if(d==0)
// {
// for(j=0; j<l; j++)
// {
// arr[x][y+j]=1;
//
// }
// }
// else
// {
// for(j=0;j<l;j++)
// {
// arr[x+j][y]=1;
// }
// }
// }
// for(i=1;i<=w;i++)
// {
// for(j=1;j<=h;j++)
// {
// printf("%d ", arr[i][j]);
// }
// printf("\n");
// }
// return 0;
////}
//#include <stdio.h>
//
//int main()
//{
// int arr[11][11],i,j,a,b;
// for(i=0;i<11;i++)
// {
// for(j=0;j<11;j++)
// {
// scanf("%d", &arr[i][j]);
// }
// }
//
// for(i=0;i<11;i++)
// {
// if(arr[11][j])
// }
//}
//재귀함수 = 함수 내에서 자기 자신 함수를 호출 하는 함수
//종료조건 설정 중요
//반복문 대신 쓰임
/*
void f(int n)
{
printf("%d\n",n);
if(n==0) return;
f(n-1);
}
int main()
{
f(3);
}
*/
//#include <stdio.h>
//int n;
//
//int f(int n)
//{
// if(n==0) return;
//
// f(n-1);
//
// printf("%d\n",n);
//}
//
//int main()
//{
// scanf("%d", &n);
// f(n);
//}
//#include <stdio.h>
//int n;
//
//int f(int n)
//{
// if(n==0) return;
// printf("%d\n",n);
//
// f(n-1);
//
//
//}
//
//int main()
//{
// scanf("%d", &n);
// f(n);
//}
//#include <stdio.h>
//int a,b;
//
//int f(int a,int b)
//{
// if(b<a) return;
//
// if(a%2!=0)
// {
// printf("%d ", a);
// }
// f(a+1,b);
//}
//int main()
//{
// scanf("%d %d", &a, &b);
// f(a,b);
//}
//#include <stdio.h>
//
//int n;
//
//int f(int n)
//{
// if(n==1) return 1;
//
// return n+f(n-1);
//}
//
//int main()
//{
// scanf("%d", &n);
// printf("%d", f(n));
// return 0;
//
//}
//#include <stdio.h>
//
//int n;
//
//int f(int n)
//{
// if(n==1) return 1;
//
// return n*f(n-1);
//}
//
//int main()
//{
// scanf("%d", &n);
// printf("%d", f(n));
// return 0;
//}
#include <stdio.h>
int n;
int f(int n)
{
if (n==1 || n==2) return 1;
return f(n-1)+f(n-2);
}
int main()
{
scanf("%d", &n);
printf("%d", f(n));
return 0;
}