← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

const MOD int64 = 1000000007
const INV2 int64 = 500000004

func sumRangeMod(l, r uint64) int64 {
	a := int64((l + r) % uint64(MOD))
	b := int64((r - l + 1) % uint64(MOD))
	return ((a * b) % MOD) * INV2 % MOD
}

func min(a, b uint64) uint64 {
	if a < b {
		return a
	}
	return b
}

func main() {
	in := bufio.NewReader(os.Stdin)
	var n, m uint64
	fmt.Fscan(in, &n, &m)

	k := min(n, m)
	ans := (int64(m%uint64(MOD)) * int64(n%uint64(MOD))) % MOD

	var sub int64 = 0
	for i := uint64(1); i <= k; {
		q := n / i
		r := n / q
		if r > k {
			r = k
		}
		sumI := sumRangeMod(i, r)
		term := (int64(q%uint64(MOD)) * sumI) % MOD
		sub += term
		if sub >= MOD {
			sub -= MOD
		}
		i = r + 1
	}

	ans -= sub
	if ans < 0 {
		ans += MOD
	}
	fmt.Println(ans)
}