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 Python (3.8.2) (judge verdict: Accepted)

"""
B=10**100
とすると、Bが非常に大きいので、B,B+1,B+2,,,B+Nの中でK個選んだ時のKが違えば、K個の値の和は必ず違う値になる
従ってKを固定した時、1,2,3,,,Nの中でK個選んだ時の総和が何通りあるかを求めれば良い

SはK以上N+1以下の値をとるものとする
総和を最小にするには、左からS個取れば良い
min L = 0+1+2+...+S-1
総和を最大にするには、右からS個取れば良い
max R = (n-S+1)+...+n
LからRの間の数は全て作れるので、Sを固定したときに取り得る値はR-L+1通りある

左端l、右端rの公差1の等差数列の和は
(l+r)*(r-l+1)/2
"""

import sys
sys.setrecursionlimit(10**6)
readline = sys.stdin.readline
N,K = [int(i) for i in readline().split()]

ans = 0

def sum(l, r):
    return (l+r)*(r-l+1)//2

for S in range(K, N+2):
    L = sum(0, S-1)
    R = sum(N-S+1, N)
    ans += (R-L+1)%(10**9+7)

ans %= 10**9+7
print(ans)