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: Time Limit Exceeded)

#include<stdio.h>
#include<stdlib.h>
#define BUFSIZE 1000000000
typedef long long ll;
int N,K;

ll rem=0;
ll Sum(ll sum,ll sum2,ll num){

	if(num == N+2){
		return 0;
	}

	for(ll i=0;i < num;i++){
		sum=i+sum;
		sum=(sum%BUFSIZE+7);
	}
	for(ll i=N;i >= N+1-num;i--){

		sum2=i+sum2;
		sum2=(sum2%BUFSIZE+7);
	}/*
	printf("%d %d\n",sum,sum2);
	*/
	rem=rem + sum2 - sum + 1;
	
	Sum(0,0,num+1);
	
	return 0;
}

int main(void){
	scanf("%d",&N);
	scanf("%d",&K);
	if(N < K){
		printf("1");
		exit(0);
	}
	
	Sum(0,0,K);
	if(rem<0){
		printf("%d",(BUFSIZE+7)-rem);
	}else{
		printf("%d",rem%(BUFSIZE+7));
	}
}