#include #define _GLIBCXX_DEBUG using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define rep2(i, s, n) for (int i = s; i < (int)(n); i++) #define Clear(a) a = decltype(a)() #define all(a) a.begin(),a.end() typedef long long ll; typedef pair p; //const ll big=998244353; const ll big=1000000007; const int dx[4]={1,0,-1,0}; const int dy[4]={0,1,0,-1}; ll max(ll x,ll y){ if(x>y)return x; else return y; } ll min(ll x,ll y){ if(x> n >> m; vector fac(m+1),facin(m+1); fac[0]=1; facin[0]=1; rep(i,m){ fac[i+1]=fac[i]*(i+1)%big; facin[i+1]=facin[i]*inv(i+1)%big; } ll ans=0; rep2(i,n,m+1){//com(i,n) ans+=fac[i]*facin[n]%big *facin[i-n]%big; ans%=big; } cout << ans << endl; }