#include <bits/stdc++.h>
using namespace std;
long long n, m;
int mod = 1e9 + 7;
int rev2;
long long pp, kk;
long long wynik = 0;
long long potmod(long long x, long long k) {
  long long res = 1;
  x %= mod;
  while (k > 0) {
    if (k & 1) {
      res *= x;
      res %= mod;
    }
    x *= x;
    x %= mod;
    k >>= 1;
  }
  return res;
}
long long ile(long long i) {
  long long res = n / (i + 1);
  res -= (n % i);
  res /= i;
  res++;
  if (n % (i + 1) == 0) res--;
  return res;
}
long long jebaj(long long y) {
  long long il = ile(y);
  pp = kk - il + 1;
  if (pp > m) return 0;
  il %= mod;
  long long pom = y;
  pom %= mod;
  pom *= il - 1;
  pom %= mod;
  if (pom < 0) pom += mod;
  long long res = 2 * (n % y) + pom;
  res %= mod;
  res *= il;
  res %= mod;
  res *= rev2;
  res %= mod;
  if (kk > m) {
    long long pom2 = y % mod;
    long long il2 = (kk - m) % mod;
    pom2 *= il2 - 1;
    pom2 %= mod;
    if (pom2 < 0) pom2 += mod;
    long long res2 = 2 * (n % y) + pom2;
    res2 %= mod;
    res2 *= il2;
    res2 %= mod;
    res2 *= rev2;
    res2 %= mod;
    res -= res2;
    res %= mod;
    if (res < 0) res += mod;
  }
  return res;
}
int main() {
  rev2 = potmod(2, mod - 2);
  scanf("%lld %lld", &n, &m);
  if (m <= 20000000) {
    long long wynn = 0;
    for (int i = 1; i <= m; ++i) {
      wynn += n % i;
      wynn %= mod;
    }
    cout << wynn << endl;
    return 0;
  }
  long long wyn = 0;
  kk = n;
  for (long long i = 1; i * i <= n; ++i) {
    wyn += jebaj(i);
    wyn %= mod;
    kk = pp - 1;
    long long j = n / i;
    if (j != i) {
      wyn += n % j;
      wyn %= mod;
    }
  }
  if (m > n) {
    long long pom = m - n;
    pom %= mod;
    pom *= n % mod;
    pom %= mod;
    wyn += pom;
    wyn %= mod;
  }
  wyn %= mod;
  cout << wyn << endl;
  return 0;
}
