/*
#include <stdio.h>
int n;
int f(int n)
{
int s=0;
while(n>0)
{
s+=n%10;
n/=10;
}
return s;
}
int main()
{
scanf("%d",&n);
while(f(n)/10>0)
{
n=f(n);
}
printf("%d",f(n));
}
*/
/*
#include <stdio.h>
int n, k, d[1010];
//
int lower_bound(int k)
{
if(d[n]<k) return n+1;
int min;
for(int i=1; i<=n; i++)
{
if(d[i]>=k) return i;
}
}
// 이 부분에 들어가야 될 코드를 작성하여 제출
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 a, n;
long long int pow(int a, int n)
{
if(a==1) return 1;
long long int A=1;
for(int i=1;i<=n;i++)
{
A*=a;
}
return A;
}
// 이 부분에 들어가야 될 코드를 작성하여 제출
int main()
{
scanf("%d%d", &a, &n);
printf("%lld\n", pow(a, n));
}
*/
/*
#include <stdio.h>
int gcd(int p, int q)
{
if(p==0) return q;
return gcd(q%p, p);
}
// a b = 두 수의 최대공약수 두수의 최소공배수
// 최소공 = a*b/최대공
// a*b/gcd(a,b)
long long int lcm(int a, int b)
{
if(a==b) return a;
int p,q;
if(b>a)
{
p=a;
q=b;
}
else
{
p=b;
q=a;
}
return (long long int) a*b/gcd(p,q);
}
// 이 부분에 들어가야 될 코드를 작성하여 제출
int main()
{
int a, b;
scanf("%d%d", &a, &b);
printf("%lld\n", lcm(a, b));
}
*/
/*
#include <stdio.h>
int main()
{
int n,m,i=1,j=1,k=1,d=1;
int arr[101][101]={};
scanf("%d %d",&n,&m);
while(k<=n*m)
{
if(d==1)
{
while(i==1)
{
arr[i][j]=k++;
if(j==m)
{
i++;
d++;
break;
}
j++;
}
while(d==1&&i!=1)
{
arr[i][j]=k++;
if(arr[i][j+1]!=0)
{
i++;
d++;
break;
}
j++;
}
}
else if(d==2)
{
while(j==m)
{
arr[i][j]=k++;
if(i==n)
{
j--;
d++;
break;
}
i++;
}
while(d==2&&j!=m)
{
arr[i][j]=k++;
if(arr[i+1][j]!=0)
{
j--;
d++;
break;
}
i++;
}
}
else if(d==3)
{
while(i==n)
{
arr[i][j]=k++;
if(j==1)
{
i--;
d++;
break;
}
j--;
}
while(d==3&&i!=n)
{
arr[i][j]=k++;
if(arr[i][j-1]!=0)
{
i--;
d++;
break;
}
j--;
}
}
else if(d==4)
{
while(1)
{
arr[i][j]=k++;
if(arr[i-1][j]!=0)
{
j++;
d=1;
break;
}
i--;
}
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
*/
/*
#include <stdio.h>
int main()
{
int n,m,i=1,j=1,d=1;
int arr[101][101]={};
scanf("%d %d",&n,&m);
int k=n*m;
while(k>=1)
{
if(d==1)
{
while(i==1)
{
arr[i][j]=k--;
if(j==m)
{
i++;
d++;
break;
}
j++;
}
while(d==1&&i!=1)
{
arr[i][j]=k--;
if(arr[i][j+1]!=0)
{
i++;
d++;
break;
}
j++;
}
}
else if(d==2)
{
while(j==m)
{
arr[i][j]=k--;
if(i==n)
{
j--;
d++;
break;
}
i++;
}
while(d==2&&j!=m)
{
arr[i][j]=k--;
if(arr[i+1][j]!=0)
{
j--;
d++;
break;
}
i++;
}
}
else if(d==3)
{
while(i==n)
{
arr[i][j]=k--;
if(j==1)
{
i--;
d++;
break;
}
j--;
}
while(d==3&&i!=n)
{
arr[i][j]=k--;
if(arr[i][j-1]!=0)
{
i--;
d++;
break;
}
j--;
}
}
else if(d==4)
{
while(1)
{
arr[i][j]=k--;
if(arr[i-1][j]!=0)
{
j++;
d=1;
break;
}
i--;
}
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
*/
/*
#include <stdio.h>
int main()
{
int arr[11][11]={};
int i,j,k,l,n,p,q,s[9]={};
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
scanf("%d",&arr[i][j]);
}
}
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
if(arr[i][j]>0)
{
for(k=1;k<=arr[i][j];k++)
{
if(i-k<=0 || arr[i-k][j]==-1) break;
else if(arr[i-k][j]>0) continue;
arr[i-k][j]=-2;
}
for(k=1;k<=arr[i][j];k++)
{
if(i+k>=11 || arr[i+k][j]==-1) break;
else if(arr[i+k][j]>0) continue;
arr[i+k][j]=-2;
}
for(k=1;k<=arr[i][j];k++)
{
if(j-k<=0 ||arr[i][j-k]==-1) break;
else if(arr[i][j-k]>0) continue;
arr[i][j-k]=-2;
}
for(k=1;k<=arr[i][j];k++)
{
if(j+k>=11 ||arr[i][j+k]==-1) break;
else if(arr[i][j+k]>0) continue;
arr[i][j+k]=-2;
}
arr[i][j]=-2;
}
}
}
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d",&p,&q);
if(arr[p][q]==0)
{
arr[p][q]=i;
s[i]=1;
}
else s[i]=0;
}
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
printf("Character Information\n");
for(k=1;k<=n;k++)
{
printf("player %d ",k);
if(s[k]==1) printf("survive\n");
else printf("dead\n");
}
return 0;
}
*/
/*
재귀함수
함수 ->
재 다시
귀 돌아오는
1. 함수 내에서 자신을 다시 호출하는 함수
2. 자신으로 다시 정의내리는 함수 ( 점화식 )
//f(n) : n~1출력
//
//void f(int n)
//{
// for(int i=n;i>=1;i--)
// printf("%d ",i);
//}
//f(n) : n~1출력
// n출력 -> n-1출력 -> n-2출력 -> ... 1출력
// n출력 -> n-1부터1출력
// n출력 -> f(n-1)
void f(int n)
{
if(n==0) return ;
printf("%d ",n);
f(n-1);
}
int main()
{
f(3); //f함수 호출
return 0;
}
*/
/*
#include <stdio.h>
void f(int n)
{
if(n==0) return ;
f(n-1);
printf("%d\n",n);
}
int main()
{
int n;
scanf("%d",&n);
f(n);
}
*/
/*
#include <stdio.h>
void f(int a,int b)
{
if(a>b) return ;
if(a%2==1) printf("%d ",a);
f(a+1,b);
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
f(a,b);
return 0;
}
*/
/*
#include <stdio.h>
void f(int n)
{
if(n==0) return ;
f(n/2);
printf("%d",n%2);
}
int main()
{
int n;
scanf("%d",&n);
if(n==0) printf("0");
f(n);
return 0;
}
*/
/*
#include <stdio.h>
void f(int n)
{
if(n==1) {
return;
}
else if (n%2==1)
{
printf("%d\n",3*n+1);
f(3*n+1);
}
else
{
printf("%d\n",n/2);
f(n/2);
}
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",n);
f(n);
return 0;
}
f(n) : 1~n 합 리턴
: 1 ~n-1합 + n 리턴
: f(n-1) + n 리턴
*/
/*
#include <stdio.h>
int f(long long int n)
{
if(n==0) return 0;
return f(n/10)+(n%10);
}
int main()
{
long long int n;
scanf("%lld",&n);
printf("%d", f(n));
return 0;
}
*/
/*
#include <stdio.h>
int f(int n)
{
if(n==1) return 1;
return f(n-1)+n;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
return 0;
}
*/
/*
#include <stdio.h>
int f(int n)
{
if(n==1) return 1;
return f(n-1)*n;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
return 0;
}
*/
#include <stdio.h>
int f(int n)
{
if(n==1) return 1;
else if(n==2) return 1;
return f(n-2)+f(n-1);
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
return 0;
}