#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
#include <string.h>
#include <vector>
#include <set>
#include <map>
#include <queue>
using namespace std;
#define ll long long
#define ld long double
#define ull unsigned long long
#define pb push_back
#define mp make_pair
#define y0 isdnfviu
#define y1 asinhiv
#define fst first
#define snd second
#define count sdifnsugh
int s(int n)
{
return (n * (n + 1)) / 2;
}
const int maxn = 200003, MOD = 1000000007;
int f[maxn];
int main()
{
int r, g;
cin >> r >> g;
if (r > g)
swap(r, g);
int n;
for (int i = 1; i <= 1000; i++)
if (s(i) <= r + g && s(i + 1) > r + g)
{
n = i;
break;
}
int kol = s(n);
f[0] = 1;
for (int i = 1; i <= n; i++)
for (int j = r; j >= i; j--)
{
f[j] += f[j-i];
if (f[j] >= MOD)
f[j] -= MOD;
}
int ans = 0;
for (int i = r; i >= 0; i--)
if (i + g >= kol)
ans = (ans + f[i]) % MOD;
cout << ans << "\n";
cin >> n;
return 0;
}