#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
long long inv2;
long long pot(long long a, long long b) {
  if (!b) return 1;
  long long t = pot(a, b / 2);
  if (b % 2) return (t * ((t * a) % mod)) % mod;
  return (t * t) % mod;
}
long long soma(long long l, long long r) {
  l %= mod, r %= mod;
  long long a = (((r * (r + 1)) % mod) * inv2) % mod;
  long long b = (((l * (l - 1)) % mod) * inv2) % mod;
  return (a - b + mod) % mod;
}
int main(void) {
  long long n, m;
  cin >> n >> m;
  inv2 = pot(2ll, mod - 2);
  vector<long long> d;
  long long ans = (n % mod) * (m % mod) % mod;
  long long j = 1;
  for (long long i = 1; i * i <= n && i <= m; i++) {
    ans = (ans + mod - (n / i * i) % mod) % mod;
    j = i;
  }
  j++;
  if (j <= m) {
    for (long long i = n / j; i >= 1; i--) {
      long long l = n / (i + 1) + 1;
      long long r = n / i;
      l = max(l, j);
      r = min(r, m);
      if (l > r) continue;
      ans = (ans + mod - ((soma(l, r) % mod) * (i % mod) % mod)) % mod;
    }
  }
  printf("%lld\n", ans);
}
