#include <iostream>
#define ll long long
using namespace std;

ll mod=1000000007, dp[62][2][4][4];

int main() {
	ll L, R;
	cin >> L >> R;
	dp[61][0][0][0]=1;
	for(int i=60; i>=0; --i){
	    for(int j=0; j<32; ++j){
	        int a=(j/4)%4, b=j%4, t=j/16;
	        if(((a&1) || !(L&((ll) 1<<i))) && ((b&1) || !(L&((ll) 1<<i)))){
	            int c=a, d=b;
	            if((R&((ll) 1<<i))){
	                c |= 2;
	                d |= 2;
	            }
	            dp[i][t][c][d]=(dp[i][t][c][d]+dp[i+1][t][a][b])%mod;
	        }
	        if(((a&2) || (R&((ll) 1<<i))) && ((b&2) || (R&((ll) 1<<i)))){
	            int e=a, f=b;
	            if(!(L&((ll) 1<<i))){
	                e |= 1;
	                f |= 1;
	            }
	            dp[i][1][e][f]=(dp[i][1][e][f]+dp[i+1][t][a][b])%mod;
	        }
	        if((((a&1) || !(L&((ll) 1<<i))) && ((b&2) || (R&((ll) 1<<i)))) && t){
	            int g=a, h=b;
	            if((R&((ll) 1<<i))) g |= 2;
	            if(!(L&((ll) 1<<i))) h |= 1;
	            dp[i][t][g][h]=(dp[i][t][g][h]+dp[i+1][t][a][b])%mod;
	        }
	    }
	}
	ll ans=0;
	for(int i=0; i<16; ++i){
	    ans=(ans+dp[0][1][i/4][i%4])%mod;
	}
	cout << ans << endl;
	return 0;
}
