#include using namespace std; vector prime; map cnt; const long long int MOD = 1e9 + 7; long long int mypow(long long int x,long long int n) { long long int res = 1; while(n>0) { if(n%2==1) { res = ((res%MOD)*(x%MOD)%MOD); res%=MOD; } x = ((x%MOD)*(x%MOD)%MOD); x%=MOD; n/=2; } return res; } void eratos(void) { bool isprime[1000001]; memset(isprime,true,sizeof(isprime)); for(int i=2;i<=1000000;i++) { if(isprime[i]) { prime.push_back(i); for(int j=2*i;j<=1000000;j+=i) { isprime[j] = false; } } } } int main(void) { cin.tie(0); ios::sync_with_stdio(false); long long int N,M; cin >> N >> M; eratos(); for(int i=0;i=1;i--) { val = ((val%MOD)*(mypow(i,MOD-2)%MOD)%MOD); val%=MOD; } res = ((res%MOD)*(val%MOD)%MOD); res%=MOD; } cout << res << '\n'; return 0; }