#include <bits/stdc++.h>
using namespace std;
void zanj0() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
const int N = 2e5 + 5;
const int M = 900;
int dp[2][N];
int add(long a, long b) {
  return ((a % 1000000007) + (b % 1000000007)) % 1000000007;
}
void solve() {
  int n, m;
  cin >> n >> m;
  int height = 0;
  int curr = 1;
  int total = n + m;
  while (total >= curr) {
    height++;
    total -= curr;
    curr++;
  }
  dp[0][m] = 1;
  total = 0;
  for (int curr = 0; curr < height; curr++) {
    int now = curr % 2;
    int tar = now ^ 1;
    for (int j = 0; j <= m; j++) dp[tar][j] = 0;
    for (int j = max((int)0, m - total); j <= m; j++) {
      int req = (curr + 1);
      int red = n - (total - (m - j));
      if (red < 0 || red > n) continue;
      if (j >= req) dp[tar][j - req] = add(dp[tar][j - req], dp[now][j]);
      if (red >= req) dp[tar][j] = add(dp[tar][j], dp[now][j]);
    }
    total += (curr + 1);
  }
  int ret = 0;
  for (int i = 0; i <= m; i++) {
    ret = add(ret, dp[height % 2][i]);
  }
  cout << ret << "\n";
}
int32_t main() {
  zanj0();
  solve();
  cerr << "Time : " << 1000 * (long double)clock() / (long double)CLOCKS_PER_SEC
       << "ms\n";
  return 0;
}
