#include <bits/stdc++.h>
using namespace std;
long long n,k;
int main(){
cin >> n >> k;
if (k == 0){
cout << n;
return 0;
}
unsigned long long mau = pow(10,9) + 7;
unsigned long long t = 2*k + 1;
unsigned long long A[t];
A[0] = 1;
A[1] = 1;
for (unsigned long long i = 2; i < t; i++){
A[i] = (A[i - 1] + A[i - 2]) % mau;
}
cout << (A[t - 1] * n) % mau;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiBsb25nIGxvbmcgbixrOwppbnQgbWFpbigpewoJY2luID4+IG4gPj4gazsKCWlmIChrID09IDApewoJCWNvdXQgPDwgbjsKCQlyZXR1cm4gMDsKCX0KCXVuc2lnbmVkIGxvbmcgbG9uZyBtYXUgPSBwb3coMTAsOSkgKyA3OwoJdW5zaWduZWQgbG9uZyBsb25nIHQgPSAyKmsgKyAxOwoJdW5zaWduZWQgbG9uZyBsb25nIEFbdF07CglBWzBdID0gMTsKCUFbMV0gPSAxOwoJZm9yICh1bnNpZ25lZCBsb25nIGxvbmcgaSA9IDI7IGkgPCB0OyBpKyspewoJCUFbaV0gPSAoQVtpIC0gMV0gKyBBW2kgLSAyXSkgJSBtYXU7Cgl9Cgljb3V0IDw8IChBW3QgLSAxXSAqIG4pICUgbWF1Owp9Cg==