#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
long long ans, mn[(int)5e6 + 7];
int mul(long long a, long long b) {
  if (b == 0) return 1;
  if (b == 1) return (a % mod);
  if (b & 1) {
    return (mul(a, b - 1) + a) % mod;
  }
  int c = mul(a, b >> 1);
  return (c + c) % mod;
}
int sum(long long x) {
  return (((500000004LL * (x % mod)) % mod) * ((x + 1) % mod)) % mod;
}
int add(long long x) {
  x += mod;
  x %= mod;
  return x;
}
int f(long long l, long long r) {
  int a = sum(r);
  int b = sum(l - 1);
  return add((a - b));
}
int main() {
  long long n, m;
  scanf("%lld%lld", &n, &m);
  int sz = sqrt(n);
  for (long long i = 1; i * i <= n; i++) {
    mn[i] = min(n / i, m);
  }
  for (long long i = 1; i * i <= n; i++) {
    ans += (n % i);
    ans %= mod;
    long long l = n / (i + 1) + 1, r = mn[i];
    long long c = (r - l + 1) % mod;
    if (l <= sz || i == m) break;
    if (l > m) continue;
    ans += mul(n % mod, c % mod);
    ans -= (i * f(l, r)) % mod;
    ans = add(ans);
  }
  ans = add(ans);
  printf("%d\n", add(ans + mul(max(0ll, m - n), n)) % mod);
}
