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 Fortran (GNU Fortran 9.2.1) (judge verdict: Runtime Error)

program problemA
  implicit none


integer(8) :: N,K, a,b,c,d,ans

read(*,*) N,K

ans=0
if (K<=N) then
  do while (K<=N)
    call ex(N-1,a)
    b=2*N-K+1
    call ex(N-K+1,c)
    call ex(K-1,d)
    ans=ans+a*b/(c*d)
    K=K+1
  end do
end if

ans=ans+1

if (K==1) ans=ans+1

write(*,*) mod(ans,10**9+7)










stop
end program


subroutine ex(n,k)
  implicit none

  integer(8), intent(in) :: n
  integer(8), intent(out) :: k
  integer(8) :: l, i

  l=1
  i=n

  do while (i>0)
    l=l*i
    i=i-1
  end do

  k=l

  return
end subroutine ex