#include<iostream>
#include<cstring>
using namespace std;
struct Bigint{
int len,a[1000];
Bigint(int x=0){
memset(a,0,sizeof(a));
for(len=1;x!=0;++len)
a[len]=x%10,x/=10;
--len;
}
int &operator[](int i){
return a[i];
}
void up(int l){
len=l;
for(int i=1;i<=len;++i)
a[i+1]+=a[i]/10,a[i]%=10;
while(a[len]==0) --len;
}
};
ostream &operator<<(ostream &out,Bigint &a){
int len=a.len;
for(int i=max(len,1);i>=1;--i)
out<<a[len];
return out;
}
Bigint operator+(Bigint a,Bigint b){
Bigint c; int len=max(a.len,b.len);
for(int i=1;i<=len;++i)
c[i]+=a[i]+b[i];
c.up(len+1);
return c;
}
int main(){
long long n,m;
Bigint f[1001]={1,1,2};
cin>>m>>n; n-=m;
for(int i=3;i<=n;++i)
f[i]=f[i-1]+f[i-2];
cout<<f[n];
return 0;
}