#include <bits/stdc++.h>
using namespace std;
int dp[200005][2], N, ANS;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long x, y, i, j;
  int k, l;
  cin >> x >> y;
  N = x + y;
  for (i = 900; i >= 1; i--) {
    k = i % 2;
    l = !k;
    for (j = 0; j <= x; j++) {
      if (N - i * (i - 1) / 2 - j < 0) {
        dp[j][k] = -1;
      } else {
        if (j < i) {
          dp[j][k] = 1 + dp[j][l];
        } else
          dp[j][k] = 1 + max(dp[j - i][l], dp[j][(i + 1) % 2]);
      }
    }
  }
  ANS = dp[x][1];
  for (i = 900; i >= 1; i--) {
    k = i % 2;
    l = !k;
    for (j = 0; j <= x; j++) {
      if (N - i * (i - 1) / 2 - j < 0) {
        dp[j][k] = 0;
      } else if (i == ANS + 1) {
        dp[j][k] = 1;
      } else {
        if (j < i) {
          dp[j][k] = dp[j][l];
        } else
          dp[j][k] = (dp[j - i][l] + dp[j][(i + 1) % 2]) % 1000000007;
      }
      dp[i][j] %= 1000000007;
    }
  }
  cout << dp[x][1] % 1000000007 << endl;
  return 0;
}
