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 Ruby (2.7.1) (judge verdict: Wrong Answer)

# 標準入力を分解
n, k = gets.split.map(&:to_i)
ps = []
0.upto(n){ |j| ps.push 10**100 + j }
vs = []
ss = []
p n,k,ps

# 数の選択パターンを洗い出す
0.upto(2**(n+1)) do |i|
  v = []
  n.downto(0) do |j|
    d = 2**j
    if i >= d
      i -= d
      v.unshift 1
    else
      v.unshift 0
    end
    # puts "i=#{i},d=#{d},j=#{j}"
  end
  vs.push v
  # p v
end
vs.select!{ |v| v.sum >= k }
p vs

# 選択した数の和を列挙する
vs.each do |v|
  s = 0
  v.each_index do |i|
    s += v[i] * ps[i]
  end
  ss.push s
end
ss.uniq!
p ss

# 解答
puts ss.length