#include <bits/stdc++.h>
using namespace std;
int DP[2][200005];
int mod = 1e9 + 7;
int can(int r, int g, int h) {
  for (h; h > 0; h--)
    if (r >= g) {
      if (r >= h)
        r -= h;
      else
        return 0;
    } else {
      if (g >= h)
        g -= h;
      else
        return 0;
    }
  return 1;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int r, g;
  cin >> r >> g;
  int L = 1, R = g + r;
  while (L < R) {
    int M = (L + R + 1) / 2;
    if (can(r, g, M))
      L = M;
    else
      R = M - 1;
  }
  int h = R;
  DP[0][0] = 1;
  for (int i = 0; i < h; i++)
    for (int j = 0; j <= r; j++)
      if (i * (i + 1LL) / 2 - j <= g) {
        if (g - i * (i + 1LL) / 2 + j >= i + 1) {
          DP[(i + 1) % 2][j] += DP[i % 2][j];
          DP[(i + 1) % 2][j] %= mod;
        }
        if (r - j >= i + 1) {
          DP[(i + 1) % 2][j + i + 1] += DP[i % 2][j];
          DP[(i + 1) % 2][j + i + 1] %= mod;
        }
        DP[i % 2][j] = 0;
      }
  int ats = 0;
  for (int j = 0; j <= r; j++) ats = (ats + DP[h % 2][j]) % mod;
  cout << ats;
}
