#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 300500;
ll fact[N];
ll invFact[N];
const int mod = 1e9 + 7;
ll fast_pow(ll a, ll p) {
  ll res = 1;
  while (p) {
    if (p % 2 == 0) {
      a = (a * a) % mod;
      p /= 2;
    } else {
      res = (res * a) % mod;
      p--;
    }
  }
  return res;
}
ll nCk(int n, int k) {
  if (k > n) {
    return 0;
  }
  return fact[n] * invFact[k] % mod * invFact[n - k] % mod;
}
void solve() {
  int n, m;
  cin >> n >> m;
  cout << nCk(n + 2 * m - 1, 2 * m) << "\n";
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  fact[0] = invFact[0] = 1;
  for (int i = 1; i < N; i++) {
    fact[i] = (fact[i - 1] * i) % mod;
    invFact[i] = fast_pow(fact[i], mod - 2);
  }
  int t = 1;
  while (t--) {
    solve();
  }
}
