#include<bits/stdc++.h>
#define TIME (1.0* clock()/CLOCKS_PER_SEC)
#define pb push_back
#define eb emplace_back
#define pq priority_queue <li, vector <li>, greater <li>>
using namespace std;
const int maxn=1e6;
//const int MOD=1e9+7;
//const int MOD=998244353;
//const int dx[4]{1, 0, -1, 0}, dy[4]{0, 1, 0, -1};
long long n,k;
long long fib[200005];
long long MOD=1e9+7;
void solve(){
cin>>n>>k;
fib[1]=1;
fib[2]=1;
for(int i=3;i<=200001;i++) fib[i]=(fib[i-1]+fib[i-2])%MOD;
cout<<(n*fib[2*k+1])%MOD;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);cout.tie(NULL);
if (fopen("CHIENBINH.INP", "r")){
freopen("CHIENBINH.INP", "r", stdin);
freopen("CHIENBINH.OUT", "w", stdout);
}
int ntest;
ntest=1;
//cin>>ntest;
for(int i=1;i<=ntest;i++) solve();
cerr<<"\n"<<"Time elapsed "<<TIME<<"s.\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBUSU1FICgxLjAqIGNsb2NrKCkvQ0xPQ0tTX1BFUl9TRUMpCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZWIgZW1wbGFjZV9iYWNrCgojZGVmaW5lIHBxIHByaW9yaXR5X3F1ZXVlIDxsaSwgdmVjdG9yIDxsaT4sIGdyZWF0ZXIgPGxpPj4gCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBtYXhuPTFlNjsKLy9jb25zdCBpbnQgTU9EPTFlOSs3OwovL2NvbnN0IGludCBNT0Q9OTk4MjQ0MzUzOwovL2NvbnN0IGludCBkeFs0XXsxLCAwLCAtMSwgMH0sIGR5WzRdezAsIDEsIDAsIC0xfTsKbG9uZyBsb25nIG4sazsKbG9uZyBsb25nIGZpYlsyMDAwMDVdOwpsb25nIGxvbmcgTU9EPTFlOSs3OwoKCnZvaWQgc29sdmUoKXsKICBjaW4+Pm4+Pms7CiAgZmliWzFdPTE7CiAgZmliWzJdPTE7CiAgZm9yKGludCBpPTM7aTw9MjAwMDAxO2krKykgZmliW2ldPShmaWJbaS0xXStmaWJbaS0yXSklTU9EOwogIAogIGNvdXQ8PChuKmZpYlsyKmsrMV0pJU1PRDsKfQpzaWduZWQgbWFpbigpewogIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogIGNpbi50aWUoTlVMTCk7Y291dC50aWUoTlVMTCk7CiAgaWYgKGZvcGVuKCJDSElFTkJJTkguSU5QIiwgInIiKSl7CiAgICAgIGZyZW9wZW4oIkNISUVOQklOSC5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgZnJlb3BlbigiQ0hJRU5CSU5ILk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICB9CiAgaW50IG50ZXN0OwogIG50ZXN0PTE7CiAgLy9jaW4+Pm50ZXN0OwogIAogIGZvcihpbnQgaT0xO2k8PW50ZXN0O2krKykgc29sdmUoKTsKICBjZXJyPDwiXG4iPDwiVGltZSBlbGFwc2VkICI8PFRJTUU8PCJzLlxuIjsKICByZXR1cm4gMDsKfQ==