#include <bits/stdc++.h>
using namespace std;
const int MAX = 200010;
const long long MOD = (int)1e9 + 7;
const int INF = 1e9;
const long long LLINF = 0x3f3f3f3f3f3f3f3f;
const long double EPS = 1e-8;
int r, g, h, total;
inline int add(int a, int b) { return (a + b) % MOD; }
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  cin >> r >> g;
  total = r + g;
  vector<int> ant(MAX, 0);
  if (g) ant[r] = 1;
  if (r) ant[r - 1] = 1;
  int res = 0;
  for (int l = 2; true; l++) {
    vector<int> cur(MAX, 0);
    bool eita = false;
    for (int red = 0; red <= r; red++) {
      long long minus = (l * (l - 1)) / 2 - (r - red);
      if (minus < 0) continue;
      int green = g - minus;
      if (red - l >= 0 and ant[red]) {
        eita = true;
        cur[red - l] = add(cur[red - l], ant[red]);
      }
      if (green - l >= 0 and ant[red]) {
        eita = true;
        cur[red] = add(cur[red], ant[red]);
      }
    }
    if (!eita) break;
    swap(ant, cur);
  }
  for (int red = 0; red <= r; red++) {
    res = (res + ant[red]) % MOD;
  }
  cout << res << '\n';
  return 0;
}
