#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long l, r;
long long fpow(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) res = res * a;
    a = a * a;
    b >>= 1;
  }
  return res;
}
long long solve(long long l) {
  long long odd = 0, even = 0;
  long long cnt = 0, i;
  long long ans = 0;
  for (i = 1, cnt = 1, even = 0, odd = 0; i <= l; i += i, cnt++) {
    if (cnt % 2 == 0) {
      long long tmp = 2 * (fpow(4, even) - 1) / 3;
      ans = ((ans + ((2 + 2 * tmp) % mod) * (i % mod)) % mod +
             ((i - 1) % mod * (i % mod)) % mod) %
            mod;
      even++;
    } else {
      long long tmp = 1 * (fpow(4, odd) - 1) / 3;
      ans = ((ans + ((1 + 2 * tmp) % mod) * (i % mod)) % mod +
             ((i - 1) % mod * (i % mod)) % mod) %
            mod;
      odd++;
    }
    l -= i;
  }
  if (l) {
    if (cnt % 2 == 0) {
      long long tmp = 2 * (fpow(4, even) - 1) / 3;
      ans = ((ans + ((2 + 2 * tmp) % mod) * (l % mod)) % mod +
             ((l - 1) % mod * (l % mod)) % mod) %
            mod;
      even++;
    } else {
      long long tmp = 1 * (fpow(4, odd) - 1) / 3;
      ans = ((ans + ((1 + 2 * tmp) % mod) * (l % mod)) % mod +
             ((l - 1) % mod * (l % mod)) % mod) %
            mod;
      odd++;
    }
  }
  return ans % mod;
}
int main() {
  scanf("%lld%lld", &l, &r);
  printf("%lld\n", (solve(r) + mod - solve(l - 1)) % mod);
  return 0;
}
