#include<bits/stdc++.h>
using namespace std;
const int mod = 1e9+7;
int n,m;
long long int ksm(int n,int m){
	long long int ans=1,base=n,kk=m;
	while(kk){
		if(kk&1){
			ans*=base;
			ans%=mod;
		}
		base*=base;
		base%=mod;
		kk>>=1;
	}
	return ans;
}
long long int C(int n,int m){
	if(n==m)return 1;
	long long int ans=1;
	int mm=n-m;
	//mm=max(m,n-m);
	for(int i=max(m,mm)+1;i<=n;i++){
		ans*=i;
		ans%=mod;
	}
	for(int i=2;i<=min(m,mm);i++){
		ans*=ksm(i,mod-2);
		ans%=mod;
	}
	return ans;
}
int main(){
	freopen("barrack.in","r",stdin);
	freopen("barrack.out","w",stdout);
	cin.tie(0)->sync_with_stdio(0),cout.tie(0);
	cin>>n>>m;
	long long int ans=0;
	if(n==m){
		ans+=n;
		for(int i=2;i<=n;i++){
			long long int anss=C(n,i)*(i+1);anss%=mod;
			ans+=anss;ans%=mod;
		}
		cout<<ans;
	}
	else{
		ans+=n;
		for(int i=2;i<=n;i++){
			long long int anss=C(n,i);anss%=mod;
			ans+=anss;ans%=mod;
		}
		cout<<ans;
	}
	return 0;
}