#include <bits/stdc++.h>
const int inf = 1 << 30;
const long long INF = 1ll << 61;
const double pi = acos(-1.0);
using namespace std;
int r, g;
long long dp[2][200000 + 5];
void init() { memset(dp, 0ll, sizeof(dp)); }
bool input() {
  while (cin >> r >> g) {
    return false;
  }
  return true;
}
void cal() {
  int sum = 0;
  int h = 0;
  for (int i = 1;; i++) {
    sum += i;
    if (sum > r + g) {
      h = i - 1;
      sum = (r + g) - (sum - i);
      break;
    }
  }
  dp[0][0] = 1;
  int cur = 1;
  for (int i = 0; i < h; i++) {
    int now = i * (i + 1) >> 1;
    int pos = cur;
    memset(dp[pos], 0, sizeof(dp[pos]));
    for (int j = 0; j <= r && j <= now; j++) {
      if (j + i + 1 <= r) {
        dp[pos][j + i + 1] += dp[cur ^ 1][j];
        dp[pos][j + i + 1] %= 1000000007;
      }
      if (now - j + i + 1 <= g) {
        dp[pos][j] += dp[cur ^ 1][j];
        dp[pos][j] %= 1000000007;
      }
    }
    cur ^= 1;
  }
  long long ans = 0ll;
  for (int i = 0; i <= r; i++) ans = (ans + dp[h % 2][i]) % 1000000007;
  cout << ans << endl;
}
void output() {}
int main() {
  while (true) {
    init();
    if (input()) return 0;
    cal();
    output();
  }
  return 0;
}
