Problem:
Score : 400 points

Problem Statement

We have N+1 integers: 10^{100}, 10^{100}+1, ..., 10^{100}+N.

We will choose K or more of these integers. Find the number of possible values of the sum of the chosen numbers, modulo (10^9+7).

Constraints

1 \leq N \leq 2\times 10^5

1 \leq K \leq N+1

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N K

Output

Print the number of possible values of the sum, modulo (10^9+7).

Sample Input 1

3 2

Sample Output 1

10

The sum can take 10 values, as follows:

(10^{100})+(10^{100}+1)=2\times 10^{100}+1

(10^{100})+(10^{100}+2)=2\times 10^{100}+2

(10^{100})+(10^{100}+3)=(10^{100}+1)+(10^{100}+2)=2\times 10^{100}+3

(10^{100}+1)+(10^{100}+3)=2\times 10^{100}+4

(10^{100}+2)+(10^{100}+3)=2\times 10^{100}+5

(10^{100})+(10^{100}+1)+(10^{100}+2)=3\times 10^{100}+3

(10^{100})+(10^{100}+1)+(10^{100}+3)=3\times 10^{100}+4

(10^{100})+(10^{100}+2)+(10^{100}+3)=3\times 10^{100}+5

(10^{100}+1)+(10^{100}+2)+(10^{100}+3)=3\times 10^{100}+6

(10^{100})+(10^{100}+1)+(10^{100}+2)+(10^{100}+3)=4\times 10^{100}+6

Sample Input 2

200000 200001

Sample Output 2

1

We must choose all of the integers, so the sum can take just 1 value.

Sample Input 3

141421 35623

Sample Output 3

220280457

Solution in C++ (GCC 9.2.1) (judge verdict: Wrong Answer)

#include<bits/stdc++.h>
#define MOD 1000000007
using namespace std;
typedef long long ll;

void Solve()
{
    ll ans=0,n,m,sumpre=0,sumpost=0;
    cin>>n>>m;
    vector <ll> prefix(n+2),postfix(n+2);
    
    for(int i=0;i<=n;i++)
    {
        sumpre += i;
        sumpost += n-i;
        sumpre %= MOD;
        sumpost %= MOD;
        prefix.at(i) = sumpre;
        postfix.at(i) = sumpost;
    }

    for(int i=m-1;i<n;i++)
    {
        ans += postfix.at(i)-prefix.at(i)+1;
        ans %= MOD;
    }
    if(ans<0)
        ans += MOD;
    cout<<ans;

}

int main()
{
    ll t=1;
    // cin>>t;
    while(t--)
        Solve();
    return 0;
}