#include <bits/stdc++.h>
using namespace std;
long long mod = 1e9 + 7;
long long normal(long long x) {
  x %= mod;
  if (x < 0) x += mod;
  return x;
}
long long add(long long x, long long y) {
  x = normal(x);
  y = normal(y);
  x += y;
  return normal(x);
}
long long sub(long long x, long long y) {
  x = normal(x);
  y = normal(y);
  x -= y;
  return normal(x);
}
long long mult(long long x, long long y) {
  x = normal(x);
  y = normal(y);
  return normal(x * y);
}
long long calc(long long x) {
  x = normal(x);
  x *= (x + 1);
  x /= 2;
  return x % mod;
}
long long sum(long long x, long long y) {
  return normal(calc(y) - calc(x - 1));
}
long long go(long long n, long long m) {
  m = min(n, m);
  long long ans = 0;
  long long minv = m;
  for (long long i = 1; i * i <= n; i++) {
    long long lf = n / (i + 1), rf = n / i;
    rf = min(rf, m);
    if (lf >= rf) continue;
    minv = lf;
    ans = add(ans, mult(i, sum(lf + 1, rf)));
  }
  for (int i = 1; i <= minv; i++) {
    ans = add(ans, mult(n / i, i));
  }
  return ans;
}
void solve() {
  long long n, m;
  cin >> n >> m;
  long long ans = mult(n, m) - go(n, m);
  ans = normal(ans);
  printf("%lld", ans);
}
int main() {
  int t = 1;
  for (int i = 1; i <= t; i++) {
    solve();
  }
  return 0;
}
