func_code_string: #include <bits/stdc++.h>   using namespace std;   using ll = long long;   using pii = pair<int, int>;   using ppi = pair<int, pii>;   using vpi = vector<pii>;   const int kMod = 1e9 + 7;   struct ModInt {     long long n;     ModInt(long long n = 0) : n(n % kMod) {}     ModInt operator+(const ModInt& oth) { return n + oth.n; }     ModInt operator-(const ModInt& oth) { return n - oth.n; }     ModInt operator*(const ModInt& oth) { return n * oth.n; }     long long get() { return n < 0 ? n + kMod : n; }   };   using vi = vector<ModInt>;   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     ll R, G, val = 0, n = 0;     cin >> R >> G;     while (val <= R + G) val += ++n;     n--;     cerr << (int)(1000 * ((double)clock()) / CLOCKS_PER_SEC) << endl;     vector<ll> dp(R + 1, 0);     dp[0] = 1;     ll ans = 0;     for (int i = 1; i <= n; i++) {       vector<ll> newdp(R + 1, 0);       int tmp = (1LL * i * (i + 1)) / 2;       for (int r = 0; r <= R; r++) {         int g = tmp - r;         if (r >= i) newdp[r] = dp[r - i];         if (g <= G) newdp[r] = (newdp[r] + dp[r]) % kMod;       }       dp.swap(newdp);     }     for (int r = 0; r <= R; r++) ans = (ans + dp[r]) % kMod;     cerr << (int)(1000 * ((double)clock()) / CLOCKS_PER_SEC) << endl;     cout << ans <<   n ;   }   