Calculate the value of the sum: n mod 1 + n mod 2 + n mod 3 + ... + n mod m. As the result can be very large, you should print the value modulo 10^9 + 7 (the remainder when divided by 10^9 + 7).

The modulo operator a mod b stands for the remainder after dividing a by b. For example 10 mod 3 = 1.


-----Input-----

The only line contains two integers n, m (1 ≤ n, m ≤ 10^13) — the parameters of the sum.


-----Output-----

Print integer s — the value of the required sum modulo 10^9 + 7.


-----Examples-----
Input
3 4

Output
4

Input
4 4

Output
1

Input
1 1

Output
0

Difficulty: HARD

Solutions:
from math import sqrt

def main():
	(n, m) = map(int, input().split())
	(ans, cur) = (0, 2)
	if m >= n:
		ans = n * (m - n)
		m = n - 1
	t = min(int(sqrt(n)) + 1, m)
	while cur <= t:
		ans += n % cur
		cur += 1
	while cur <= m:
		div = n // cur
		nxt = min(n // div, m)
		sub = nxt - cur + 1
		ans += n % cur * sub - div * sub * (sub - 1) // 2
		cur = nxt + 1
	print(ans % 1000000007)
main()