#include <bits/stdc++.h>
const int mod = 1000000007;
int dp[4][200005];
int main() {
  long long a, b;
  scanf("%I64d %I64d", &a, &b);
  long long t = sqrt(2 * (a + b));
  while ((t * t + t > 2 * (a + b)) || ((t * t + 3 * t + 2) <= 2 * (a + b))) {
    --t;
  }
  long long sum = t * (t + 1) / 2;
  dp[0][0] = 1;
  dp[1][0] = 1;
  dp[1][1] = 1;
  int cur = 0;
  for (int i = 1; i <= t; ++i) {
    long long temp = i * (i + 1) / 2;
    for (int j = 0; j <= temp && j <= a; ++j) {
      cur = i % 3;
      if (j == 0) {
        dp[cur][j] = 1;
        continue;
      }
      int k = cur - 1;
      if (k < 0) k = k + 3;
      dp[cur][j] = dp[k][j];
      if (j >= i) dp[cur][j] += dp[k][j - i];
      if (dp[cur][j] >= mod) dp[cur][j] %= mod;
    }
  }
  long long result = 0;
  long long temp = sum - b;
  if (temp < 0) temp = 0;
  t = t % 3;
  for (int i = (int)temp; i <= a; ++i) {
    result += dp[t][i];
    result %= mod;
  }
  printf("%I64d\n", result);
  return 0;
}
