#include<bits/stdc++.h>
using namespace std;
const int MOD = 1e9+7;
const int MAX = 1e6+5;
long long fac[MAX], inv[MAX];
long long power(long long a, long long b) {
long long res = 1;
while(b) {
if(b&1) res = (res * a) % MOD;
a = (a * a) % MOD;
b >>= 1;
}
return res;
}
long long C(int n, int k) {
if(k > n || k < 0) return 0;
return fac[n] * inv[k] % MOD * inv[n-k] % MOD;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
fac[0] = inv[0] = 1;
for(int i=1; i<MAX; i++) {
fac[i] = (fac[i-1] * i) % MOD;
inv[i] = power(fac[i], MOD-2);
}
int n, m;
cin >> n >> m;
cout << C(n+m-1, m) << "\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNT0QgPSAxZTkrNzsKY29uc3QgaW50IE1BWCA9IDFlNis1OwoKbG9uZyBsb25nIGZhY1tNQVhdLCBpbnZbTUFYXTsKCmxvbmcgbG9uZyBwb3dlcihsb25nIGxvbmcgYSwgbG9uZyBsb25nIGIpIHsKICAgIGxvbmcgbG9uZyByZXMgPSAxOwogICAgd2hpbGUoYikgewogICAgICAgIGlmKGImMSkgcmVzID0gKHJlcyAqIGEpICUgTU9EOwogICAgICAgIGEgPSAoYSAqIGEpICUgTU9EOwogICAgICAgIGIgPj49IDE7CiAgICB9CiAgICByZXR1cm4gcmVzOwp9Cgpsb25nIGxvbmcgQyhpbnQgbiwgaW50IGspIHsKICAgIGlmKGsgPiBuIHx8IGsgPCAwKSByZXR1cm4gMDsKICAgIHJldHVybiBmYWNbbl0gKiBpbnZba10gJSBNT0QgKiBpbnZbbi1rXSAlIE1PRDsKfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CgogICAgZmFjWzBdID0gaW52WzBdID0gMTsKICAgIGZvcihpbnQgaT0xOyBpPE1BWDsgaSsrKSB7CiAgICAgICAgZmFjW2ldID0gKGZhY1tpLTFdICogaSkgJSBNT0Q7CiAgICAgICAgaW52W2ldID0gcG93ZXIoZmFjW2ldLCBNT0QtMik7CiAgICB9CgogICAgaW50IG4sIG07CiAgICBjaW4gPj4gbiA+PiBtOwogICAgY291dCA8PCBDKG4rbS0xLCBtKSA8PCAiXG4iOwoKICAgIHJldHVybiAwOwp9Cg==