#include <bits/stdc++.h>
#define rep(i,n)for(int i=0;i<(n);i++)
using namespace std;
typedef long long ll;

const int MOD=1000000007;

ll ppow(ll a,ll b){
	ll res=1;
	while(b){
		if(b&1)res=(res*a)%MOD;
		a=(a*a)%MOD;
		b>>=1;
	}
	return res;
}

int dp[200000];
int main(){
	int n,m;cin>>n>>m;
	dp[0]=1;
	int sum=1;
	for(int i=1;i<=n;i++){
		dp[i]=sum;
		(sum+=dp[i])%=MOD;
		if(i-m>=0){
			(sum+=MOD-dp[i-m])%=MOD;
		}
	}
	ll U=ppow(2,n);
	cout<<(U+MOD-sum)%MOD<<endl;
}
