#include <bits/stdc++.h>
using namespace std;
const int N = 1e5;
long long int rev[N], fac[N], mod = 1e9 + 7;
long long int wop(long long int x, long long int y) {
  if (y == 0) return 1;
  long long int ret = wop(x, y / 2);
  ret %= mod;
  ret *= ret;
  ret %= mod;
  if (y & 1) ret *= x;
  ret %= mod;
  return ret;
}
long long int chos(long long int r, long long int n) {
  return (fac[n] * ((rev[r] * rev[n - r]) % mod)) % mod;
}
int main() {
  long long int n, m;
  cin >> n >> m;
  rev[0] = fac[0] = 1;
  for (int i = 1; i < 2e3; i++) {
    fac[i] = fac[i - 1] * i;
    fac[i] %= mod;
    rev[i] = wop(fac[i], mod - 2);
  }
  long long int ans = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = i; j <= n; j++) {
      long long int f1 = chos(i - 1, i + m - 2);
      long long int f2 = chos(n - j, n + m - j - 1);
      ans += (f1 * f2) % mod;
      ans %= mod;
    }
  }
  cout << ans;
}
