#include <bits/stdc++.h>
using namespace std;
const double pi = acos(0.0) * 2.0;
const long long mdl = 1000 * 1000 * 1000 + 7;
long long dp[2][200100];
int tot, R, G;
long long rec(int r, int h) {
  int i, j, tt = 0;
  for (i = 0; i <= r; i++) {
    dp[0][i] = dp[1][i] = 0;
  }
  dp[0][0] = 1;
  int x = 1;
  for (i = 1; i <= h; i++, x ^= 1) {
    tt += i;
    for (j = 0; j < i; j++) {
      dp[x][j] = 0;
      if ((tt - j) <= G) {
        dp[x][j] = (dp[x ^ 1][j]) % mdl;
      }
    }
    for (; j <= r; j++) {
      dp[x][j] = dp[x ^ 1][j - i];
      if ((tt - j) <= G) {
        dp[x][j] = (dp[x][j] + dp[x ^ 1][j]) % mdl;
      }
    }
  }
  x ^= 1;
  long long sum = 0;
  for (j = 0; j <= r; j++) {
    sum = (sum + dp[x][j]) % mdl;
  }
  return sum;
}
int main() {
  int g, b, tmpg, tmpb, cur;
  while (cin >> g >> b) {
    int l = 0, r = 1000, last, mid;
    while (l <= r) {
      mid = (l + r) / 2;
      cur = mid;
      tmpg = g;
      tmpb = b;
      while (cur) {
        if (tmpb > tmpg)
          tmpb -= cur;
        else
          tmpg -= cur;
        cur--;
      }
      if (tmpb < 0 || tmpg < 0)
        r = mid - 1;
      else {
        last = mid;
        l = mid + 1;
      }
    }
    tot = (last * (last + 1)) / 2;
    G = b;
    cout << rec(g, last) << endl;
  }
}
