#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
int dp[2][200005];
bool vis[2][200005];
int sum[1005];
int main() {
  int r, g, h;
  scanf("%d%d", &r, &g);
  for (int i = 1; i <= 1000; i++) {
    if (i * (i + 1) / 2 <= r + g) h = i;
  }
  for (int i = 1; i <= h; i++) {
    sum[i] = sum[i - 1] + i;
  }
  int pv = 0, nt = 1;
  dp[pv][0] = 1;
  vis[pv][0] = 1;
  int ans = 0;
  for (int i = 1; i <= h; i++) {
    memset(dp[nt], 0, sizeof(dp[nt]));
    memset(vis[nt], 0, sizeof(vis[nt]));
    for (int j = 0; j <= r; j++) {
      if (vis[pv][j] == 0) continue;
      int rr = r - j, gg = g - (sum[i - 1] - j);
      if (rr >= i) {
        vis[nt][j + i] = 1;
        dp[nt][j + i] = (dp[nt][j + i] + dp[pv][j]) % mod;
      }
      if (gg >= i) {
        vis[nt][j] = 1;
        dp[nt][j] = (dp[nt][j] + dp[pv][j]) % mod;
      }
    }
    int res = 0;
    bool ok = 0;
    for (int j = 0; j <= r; j++) {
      if (vis[nt][j]) {
        ok = 1;
        res = (res + dp[nt][j]) % mod;
      }
    }
    if (ok) ans = res;
    swap(pv, nt);
  }
  printf("%d\n", ans);
}
