#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<=200000;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;
}