#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
long long l, r;
int power(long long a, long long b) {
if (b == 0) return 1;
if (b & 1) return ((a % MOD) * (power((a % MOD * a % MOD) % MOD, (b - 1) / 2) % MOD)) % MOD;
return power(((a % MOD) * (a % MOD)) % MOD, b / 2) % MOD;
}
int sum(long long n) {
// n * (n + 1) / 2
return (((n % MOD) * ((n + 1) % MOD)) % MOD * power(2, MOD - 2)) % MOD;
}
int calc(long long i, long long j, long long q) {
// q * sum(i -> j)
return ((q % MOD) * ((sum(j) - sum(i - 1) + MOD) % MOD)) % MOD;
}
int sumdivisor(long long n) {
long long ans = 0;
long long i = 1;
while (i <= n) {
long long q = n / i;
long long j = n / q;
ans += q * (j - i + 1);
i = j + 1;
}
return ans;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> l >> r;
cout << ((sumdivisor(r)%MOD - sumdivisor(l - 1)%MOD + MOD)%MOD);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNT0QgPSAxZTkgKyA3OwoKbG9uZyBsb25nIGwsIHI7CgoKCgoKCgoKCmludCBwb3dlcihsb25nIGxvbmcgYSwgbG9uZyBsb25nIGIpIHsKICAgIGlmIChiID09IDApIHJldHVybiAxOwogICAgaWYgKGIgJiAxKSByZXR1cm4gKChhICUgTU9EKSAqIChwb3dlcigoYSAlIE1PRCAqIGEgJSBNT0QpICUgTU9ELCAoYiAtIDEpIC8gMikgJSBNT0QpKSAlIE1PRDsKICAgIHJldHVybiBwb3dlcigoKGEgJSBNT0QpICogKGEgJSBNT0QpKSAlIE1PRCwgYiAvIDIpICUgTU9EOyAKfQoKCgoKCgppbnQgc3VtKGxvbmcgbG9uZyBuKSB7CiAgICAvLyBuICogKG4gKyAxKSAvIDIKICAgIHJldHVybiAoKChuICUgTU9EKSAqICgobiArIDEpICUgTU9EKSkgJSBNT0QgKiBwb3dlcigyLCBNT0QgLSAyKSkgJSBNT0Q7Cn0KCgoKCgoKCmludCBjYWxjKGxvbmcgbG9uZyBpLCBsb25nIGxvbmcgaiwgbG9uZyBsb25nIHEpIHsKICAgIC8vIHEgKiBzdW0oaSAtPiBqKQogICAgcmV0dXJuICgocSAlIE1PRCkgKiAoKHN1bShqKSAtIHN1bShpIC0gMSkgKyBNT0QpICUgTU9EKSkgJSBNT0Q7Cn0gCgoKCgoKCgppbnQgc3VtZGl2aXNvcihsb25nIGxvbmcgbikgewogICAgbG9uZyBsb25nIGFucyA9IDA7CgogICAgbG9uZyBsb25nIGkgPSAxOwoKICAgIHdoaWxlIChpIDw9IG4pIHsKICAgICAgICBsb25nIGxvbmcgcSA9IG4gLyBpOwogICAgICAgIGxvbmcgbG9uZyBqID0gbiAvIHE7CgogICAgICAgIGFucyArPSBxICogKGogLSBpICsgMSk7CgogICAgICAgIGkgPSBqICsgMTsKICAgIH0KCiAgICByZXR1cm4gYW5zOwp9CgoKCgpzaWduZWQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoMCk7IGNvdXQudGllKDApOyAKIAoKCiAgICBjaW4gPj4gbCA+PiByOwoKICAgIGNvdXQgPDwgKChzdW1kaXZpc29yKHIpJU1PRCAtIHN1bWRpdmlzb3IobCAtIDEpJU1PRCArIE1PRCklTU9EKTsKIAogICAgcmV0dXJuIDA7Cn0=