#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
long long FP(long long a, long long p) {
  long long res = 1;
  while (p > 0) {
    if (p & 1) {
      res = (res * a) % mod;
    }
    a = (a * a) % mod;
    p >>= 1;
  }
  return res;
}
int main() {
  long long n, m;
  scanf("%lld %lld", &n, &m);
  long long sub = 0;
  long long b = min(n, m);
  for (long long i = 1; i * i <= n; ++i) {
    if (i > m) break;
    sub = (sub % mod + (i % mod * (n / i) % mod) % mod) % mod;
    b = i + 1;
  }
  long long inv = FP(2, mod - 2);
  for (long long i = 1; i * i <= n; ++i) {
    if (i > m) break;
    long long x = max(b, n / (i + 1) + 1);
    long long y = min(m, n / i);
    if (y < x) continue;
    sub = sub % mod +
          (((((y - x + 1) % mod) * ((x + y) % mod)) % mod * (inv % mod) % mod) %
           mod * (i % mod) % mod) %
              mod;
    sub %= mod;
  }
  long long ans = (((m % mod) * (n % mod)) % mod - sub % mod) % mod;
  if (ans < 0) ans += mod, ans %= mod;
  printf("%lld\n", ans);
  return 0;
}
