#include <bits/stdc++.h>
using namespace std;
signed long long R, G;
signed long long dp[2][200002];
signed long long mo = 1000000007;
void solve() {
  int i, j, k, l, r, x, y;
  string s;
  cin >> R >> G;
  signed long long h = 0, t;
  while ((h + 1) * (h + 2) / 2 <= R + G) h++;
  dp[0][G] = 1;
  t = 0;
  for (i = 0; i < h; i++) {
    int cur = i % 2, tar = cur ^ 1;
    memset(dp[tar], 0, sizeof(dp[tar]));
    for (x = max(0LL, G - t); x <= G; x++) {
      int r = R - (t - (G - x));
      if (r > R) continue;
      if (r < 0) break;
      ;
      if (x >= (i + 1)) (dp[tar][x - (i + 1)] += dp[cur][x]) %= mo;
      if (r >= (i + 1)) (dp[tar][x] += dp[cur][x]) %= mo;
    }
    t += i + 1;
  }
  signed long long tot = 0;
  for (x = 0; x <= G; x++) tot += dp[h % 2][x];
  cout << tot % mo << endl;
}
int main(int argc, char** argv) {
  string s;
  int i;
  if (argc == 1) ios::sync_with_stdio(false);
  for (i = 0; i < argc - 1; i++) s += argv[i + 1], s += '\n';
  for (i = 0; i < s.size(); i++) ungetc(s[s.size() - 1 - i], stdin);
  solve();
  return 0;
}
