#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int maxn = 1005;
const int MOD = 1e9 + 7;
long long rev;
long long get(long long a, long long b) {
  long long t = sqrt(a + 10.0);
  long long last = b;
  long long ans = 0;
  for (long long i = 1; i <= t; ++i) {
    long long bb = a / (i + 1);
    bb++;
    long long start = a % bb;
    if (last >= bb) {
      ans =
          (ans + ((((start + a % last) % MOD) * ((last - bb + 1) % MOD) % MOD) *
                  rev % MOD)) %
          MOD;
      ans %= MOD;
      last = bb - 1;
    }
  }
  for (long long i = 1; i <= last; ++i) {
    ans = (ans + a % i) % MOD;
  }
  return ans % MOD;
}
long long getans(long long a, long long b) {
  long long ans = 0;
  for (int i = 1; i <= b; ++i) {
    ans = (ans + a % i) % MOD;
  }
  return ans % MOD;
}
long long pow_mod(long long a, long long n) {
  if (n == 0) return 1;
  long long ans = pow_mod(a, n / 2);
  ans = (ans * ans) % MOD;
  if (n % 2) ans = ans * a % MOD;
  return ans;
}
int main() {
  long long a, b;
  cin >> a >> b;
  long long ans = 0;
  rev = pow_mod(2, MOD - 2);
  if (b > a) {
    ans = ((b - a) % MOD) * (a % MOD) % MOD;
    b = a;
  }
  ans = (ans + get(a, b)) % MOD;
  printf("%I64d\n", ans);
  return 0;
}
