#include <bits/stdc++.h>
using namespace std;
long long mod = 1e9 + 7;
long long qpow(long long a, long long n) {
  long long ans = 1;
  while (n) {
    if (n & 1) ans = ans * a % mod;
    a = a * a % mod;
    n >>= 1;
  }
  return ans;
}
long long f(long long n) {
  if (n == 0) return 0;
  long long w = 1;
  for (long long i = 1; i < 63; i++) {
    if (n + 1 >= ((long long)1 << i)) {
      w = i;
    } else
      break;
  }
  long long ji = w / 2;
  long long o = w / 2;
  if (w & 1) ji++;
  long long ans = 0;
  long long jinum = 0;
  long long onum = 0;
  long long temp = 1;
  for (int i = 0; i < ji; i++) {
    jinum += temp;
    temp <<= 2;
  }
  temp = 2;
  for (int i = 0; i < o; i++) {
    onum += temp;
    temp <<= 2;
  }
  ans += (1 + (jinum * 2 - 1) % mod) * (jinum % mod) % mod * qpow(2, mod - 2) %
         mod;
  ans %= mod;
  ans += (2 + (onum * 2) % mod) * (onum % mod) % mod * qpow(2, mod - 2) % mod;
  ans %= mod;
  if (w & 1) {
    ans +=
        (onum * 2 % mod + 2 + onum * 2 % mod + 2 * (n - jinum - onum) % mod) %
        mod * ((n - jinum - onum) % mod) % mod * qpow(2, mod - 2) % mod;
    ans %= mod;
  } else {
    ans += (jinum * 2 % mod + 1 + (jinum * 2 - 1) % mod +
            2 * (n - jinum - onum) % mod) %
           mod * ((n - jinum - onum) % mod) % mod * qpow(2, mod - 2) % mod;
    ans %= mod;
  }
  return ans;
}
int main() {
  long long l, r;
  cin >> l >> r;
  cout << (f(r) - f(l - 1) + mod) % mod;
}
