// code of JUYU ^ ^ never doubt youself ! #include #define For(i,j,k) for(int i=j;i<=k;++i) #define Dow(i,j,k) for(int i=k;i>=j;--i) #define ms(a,b) memset(a,b,sizeof a) #define ll long long #define pa pair #define fir first #define sec second #define eb emplace_back #define pb push_back #define mk make_pair using namespace std; const ll mod = 998244353; const int MOD = 1e9 + 7; const int maxn = 2e5 + 10; inline ll read() { ll t = 0, dp = 1; char c = getchar(); while(!isdigit(c)) {if (c == '-') dp = -1; c = getchar();} while(isdigit(c)) t = t * 10 + c - 48, c = getchar(); return t * dp; } inline void write(ll x){if (x < 0) {putchar('-'); x = -x;} if(x >= 10) write(x / 10); putchar(x % 10 + 48);} inline void writeln(ll x){write(x); puts("");} inline void write_p(ll x){write(x); putchar(' ');} inline void write_b(ll x){putchar(' '); write(x);} // int ans; // exactly you can get the answer signed main() { ll a = read(), b = read(); if (a > b) swap(a, b); ll ans = 2 * a * (a + 1) + 1 % MOD; cout << ans % MOD << "\n"; return 0; } /* stuff you should look for * int overflow, array bounds * special cases (n=1?) * do smth instead of nothing and stay organized * WRITE STUFF DOWN * DON'T GET STUCK ON ONE APPROACH -- Benq */