← Home
 package main

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

const MOD int64 = 1000000007

func main() {
    in := bufio.NewReader(os.Stdin)
    var n, m int64
    fmt.Fscan(in, &n, &m)
    limit := n
    if m < n {
        limit = m
    }
    total := (n % MOD) * (m % MOD) % MOD
    sum := calc(n, limit)
    ans := total - sum
    if ans < 0 {
        ans += MOD
    }
    fmt.Println(ans)
}

func calc(n, limit int64) int64 {
    var sum int64 = 0
    i := int64(1)
    inv2 := (MOD + 1) / 2
    for i <= limit {
        k := n / i
        last := n / k
        if last > limit {
            last = limit
        }
        length := last - i + 1
        a := (i%MOD + last%MOD) % MOD
        b := length % MOD
        sum_i := a * b % MOD
        sum_i = sum_i * inv2 % MOD
        term := (k % MOD) * sum_i % MOD
        sum += term
        if sum >= MOD {
            sum -= MOD
        }
        i = last + 1
    }
    return sum
}