#include <bits/stdc++.h>
#define FOR(i, a, n) for(ll i = (ll)a; i < (ll)n; i++)
#define FORR(i, n) for(ll i = (ll)n - 1LL; i >= 0LL; i--)
#define rep(i, n) FOR(i, 0, n)
#define ALL(x) (x).begin(), (x).end()
using namespace std;
using ll = long long;
template <typename T> using V = vector<T>;

constexpr int Mod = 998244353;
constexpr int mod = 1e9 + 7;
constexpr ll inf = 1LL << 60;

template <typename T> constexpr bool chmax(T &a, const T &b) {
    if(a >= b) return false;
    a = b;
    return true;
}
template <typename T> constexpr bool chmin(T &a, const T &b) {
    if(a <= b) return false;
    a = b;
    return true;
}

/*-------------------------------------------*/

ll L, R;
ll dp[2][2][2][65];

ll f(int d, int S, int l, int r) {
    if(d == -1) return S;
    if(dp[S][l][r][d] >= 0) return dp[S][l][r][d];

    ll ret = 0;
    rep(a, 2) rep(b, 2) {
        if(!a && l && (L >> d & 1)) continue;
        if(b && r && !(R >> d & 1)) continue;
        if(a > b) continue;
        if(!S && a != b) continue;
        int Nl = l && (L >> d & 1) == a;
        int Nr = r && (R >> d & 1) == b;
        int NS = S || a == 1;
        ret += f(d - 1, NS, Nl, Nr);
    }
    return dp[S][l][r][d] = ret % mod;
}

int main() {
    cin.tie(0);
    ios::sync_with_stdio(0);

    cin >> L >> R;
    memset(dp, -1, sizeof(dp));
    cout << f(61, 0, 1, 1) << endl;

    return 0;
}