#include <bits/stdc++.h>
using namespace std;
//高精度求和
string num(string s1,string s2){
string r = "";
int i,len;//len存较长的长度
int a[250] = {0},b[250] = {0},c[250] = {0};
//第一步:将2个字符数组逆序存入2个整数数组
//s1 = "12345";
for(i = 0;i < s1.size();i++){
//0->s1.size()-1 1->s1.size()-2
a[s1.size()-i-1] = s1[i] - '0';
}
for(i = 0;i < s2.size();i++){
b[s2.size()-i-1] = s2[i] - '0';
}
//第二步:逐位相加,逐位进位
//int len = s1.size() > s2.size()?s1.size():s2.size();//三目运算符,替代if else
len = s1.size();
if(s2.size() > s1.size()){
len = s2.size();
}
//加
for(i = 0;i < len;i++){
c[i] = a[i] + b[i];
}
//进位
for(i = 0;i < len;i++){
if(c[i] >= 10){
c[i+1] = c[i+1] + c[i] / 10;
c[i] = c[i] % 10;
}
}
//第三步:逆序输出
if(c[len] != 0){
len++;
}
for(i = len - 1;i>=0;i--){
r = r + (char)(c[i] + 48);
}
return r;
}
int main(){
long long m,n,x,i;
cin>>m>>n;
x = n - m;
string t1,t2,t;
t1 = "1";
t2 = "2";
for(i = 3;i <= x;i++){
t = num(t1,t2);
// cout<<i<<" "<<t<<endl;
t1 = t2;
t2 = t;
}
cout<<t2<<endl;
// cout<<LONG_LONG_MAX<<endl;
return 0;
}
/**************************************************************
Problem: 1368
User: admin
Language: C++
Result: Accepted
Time:13 ms
Memory:2076 kb
****************************************************************/