#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
#define FAST ios::sync_with_stdio(0), cin.tie(0),cout.tie(0)
#define ll long long
#define ld long double
#define int long long
#define endl "\n"
#define yes cout<<"YES"<<endl;
#define no cout<<"NO"<<endl;
#define pb push_back
//#pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
const int MOD = 1e9 + 7;
//const int MOD = 998244353 ;
const int N = 1e5 + 5;
const ll INF = 1e18;
const ll MIN = -1e18;
typedef tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> indexed_set;
long long binpow(long long a, long long k){
long long res = 1;
while (k){
if (k % 2)
res = (res * a)%MOD;
a = (a*a)%MOD ;
k/=2 ;
}
return res ;
}
void solve() {
ll l,r;cin>>l>>r;
function<int(int)> work=[&](int md)->int{
int dp[66][66][2];
memset(dp,0ll,sizeof(dp));
ll msb=log2(md);
dp[msb][1][1]=1ll;
for(int i=0;i<msb;i++){
dp[i][1][0]=1ll;
}
for(int bit=msb-1;bit>=0;bit--){
//1er case: flag false
//1.1:bit 0
for(int nb=1;nb<=64;nb++){
dp[bit][nb][0]+=dp[bit+1][nb][0];
}
//1.2: bit 1
for(int nb=1;nb<64;nb++){
dp[bit][nb+1][0]+=dp[bit+1][nb][0];
}
//2nd case : flag true
//2.1: true -> true
if(md & (1ll<<bit)){
for(int nb=1;nb<64;nb++){
dp[bit][nb+1][1]+=dp[bit+1][nb][1];
}
}
else{
for(int nb=1;nb<=64;nb++){
dp[bit][nb][1]+=dp[bit+1][nb][1];
}
}
//2.2 : true -> false
if(md & (1ll<<bit)){
for(int nb=1;nb<64;nb++){
dp[bit][nb][0]+=dp[bit+1][nb][1];
}
}
}
ll ans=0;
for(int nb=1;nb<=64;nb++){
for(int flag=0;flag<=1;flag++){
ll count=(md-binpow(2,nb)+1+MOD)%MOD;
count=(count*dp[0][nb][flag])%MOD;
ans=(ans+count)%MOD;
}
}
return (ans* binpow(2,MOD-2))%MOD;
};
cout<<(work(r)-work(l-1)+MOD)%MOD<<endl;
}
signed main() {
FAST;
auto begin = std::chrono::high_resolution_clock::now();
freopen("or.in", "r", stdin);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
ll t = 1;
cin >> t;
while (t--) solve();
#ifndef ONLINE_JUDGE
auto end = std::chrono::high_resolution_clock::now();
cout << setprecision(4) << fixed;
cout << "Execution time: " << std::chrono::duration_cast<std::chrono::duration<double>>(end - begin).count()
<< " seconds" << endl;
#endif
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KCnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwojZGVmaW5lIEZBU1QgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCksIGNpbi50aWUoMCksY291dC50aWUoMCkKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBsZCBsb25nIGRvdWJsZQojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBlbmRsICJcbiIKI2RlZmluZSB5ZXMgY291dDw8IllFUyI8PGVuZGw7CiNkZWZpbmUgbm8gY291dDw8Ik5PIjw8ZW5kbDsKI2RlZmluZSBwYiBwdXNoX2JhY2sKLy8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiTzMsdW5yb2xsLWxvb3BzIikKLy8jcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsYm1pLGJtaTIsbHpjbnQscG9wY250IikKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7Ci8vY29uc3QgaW50IE1PRCA9IDk5ODI0NDM1MyAgOwpjb25zdCBpbnQgTiA9IDFlNSArIDU7CmNvbnN0IGxsIElORiA9IDFlMTg7CmNvbnN0IGxsIE1JTiA9IC0xZTE4Owp0eXBlZGVmIHRyZWU8bGwsIG51bGxfdHlwZSwgbGVzczxsbD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+IGluZGV4ZWRfc2V0OwoKbG9uZyBsb25nIGJpbnBvdyhsb25nIGxvbmcgYSwgbG9uZyBsb25nIGspewogICAgbG9uZyBsb25nIHJlcyA9IDE7CiAgICB3aGlsZSAoayl7CiAgICAgICAgaWYgKGsgJSAyKQogICAgICAgICAgICByZXMgPSAocmVzICogYSklTU9EOwogICAgICAgIGEgPSAoYSphKSVNT0QgOwogICAgICAgIGsvPTIgOwogICAgfQogICAgcmV0dXJuIHJlcyA7Cn0KCgp2b2lkIHNvbHZlKCkgewogICAgbGwgbCxyO2Npbj4+bD4+cjsKICAgIGZ1bmN0aW9uPGludChpbnQpPiB3b3JrPVsmXShpbnQgbWQpLT5pbnR7CiAgICAgICAgaW50IGRwWzY2XVs2Nl1bMl07CiAgICAgICAgbWVtc2V0KGRwLDBsbCxzaXplb2YoZHApKTsKICAgICAgICBsbCBtc2I9bG9nMihtZCk7CiAgICAgICAgZHBbbXNiXVsxXVsxXT0xbGw7CiAgICAgICAgZm9yKGludCBpPTA7aTxtc2I7aSsrKXsKICAgICAgICAgICAgZHBbaV1bMV1bMF09MWxsOwogICAgICAgIH0KICAgICAgICBmb3IoaW50IGJpdD1tc2ItMTtiaXQ+PTA7Yml0LS0pewogICAgICAgICAgICAvLzFlciBjYXNlOiBmbGFnIGZhbHNlCiAgICAgICAgICAgICAgICAvLzEuMTpiaXQgMAogICAgICAgICAgICAgICAgZm9yKGludCBuYj0xO25iPD02NDtuYisrKXsKICAgICAgICAgICAgICAgICAgICBkcFtiaXRdW25iXVswXSs9ZHBbYml0KzFdW25iXVswXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vMS4yOiBiaXQgMQogICAgICAgICAgICAgICAgZm9yKGludCBuYj0xO25iPDY0O25iKyspewogICAgICAgICAgICAgICAgICAgIGRwW2JpdF1bbmIrMV1bMF0rPWRwW2JpdCsxXVtuYl1bMF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIC8vMm5kIGNhc2UgOiBmbGFnIHRydWUKICAgICAgICAgICAgICAgIC8vMi4xOiB0cnVlIC0+IHRydWUKICAgICAgICAgICAgICAgIGlmKG1kICYgKDFsbDw8Yml0KSl7CiAgICAgICAgICAgICAgICAgICAgZm9yKGludCBuYj0xO25iPDY0O25iKyspewogICAgICAgICAgICAgICAgICAgICAgICBkcFtiaXRdW25iKzFdWzFdKz1kcFtiaXQrMV1bbmJdWzFdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgZm9yKGludCBuYj0xO25iPD02NDtuYisrKXsKICAgICAgICAgICAgICAgICAgICAgICAgZHBbYml0XVtuYl1bMV0rPWRwW2JpdCsxXVtuYl1bMV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8yLjIgOiB0cnVlIC0+IGZhbHNlCiAgICAgICAgICAgICAgICBpZihtZCAmICgxbGw8PGJpdCkpewogICAgICAgICAgICAgICAgICAgIGZvcihpbnQgbmI9MTtuYjw2NDtuYisrKXsKICAgICAgICAgICAgICAgICAgICAgICAgZHBbYml0XVtuYl1bMF0rPWRwW2JpdCsxXVtuYl1bMV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBsbCBhbnM9MDsKICAgICAgICBmb3IoaW50IG5iPTE7bmI8PTY0O25iKyspewogICAgICAgICAgICBmb3IoaW50IGZsYWc9MDtmbGFnPD0xO2ZsYWcrKyl7CiAgICAgICAgICAgICAgICBsbCBjb3VudD0obWQtYmlucG93KDIsbmIpKzErTU9EKSVNT0Q7CiAgICAgICAgICAgICAgICBjb3VudD0oY291bnQqZHBbMF1bbmJdW2ZsYWddKSVNT0Q7CiAgICAgICAgICAgICAgICBhbnM9KGFucytjb3VudCklTU9EOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAoYW5zKiBiaW5wb3coMixNT0QtMikpJU1PRDsKICAgIH07CiAgICBjb3V0PDwod29yayhyKS13b3JrKGwtMSkrTU9EKSVNT0Q8PGVuZGw7Cn0KCnNpZ25lZCBtYWluKCkgewogICAgRkFTVDsKICAgIGF1dG8gYmVnaW4gPSBzdGQ6OmNocm9ubzo6aGlnaF9yZXNvbHV0aW9uX2Nsb2NrOjpub3coKTsKICAgIGZyZW9wZW4oIm9yLmluIiwgInIiLCBzdGRpbik7CiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiNlbmRpZgogICAgbGwgdCA9IDE7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHNvbHZlKCk7CiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBhdXRvIGVuZCA9IHN0ZDo6Y2hyb25vOjpoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpOwogICAgY291dCA8PCBzZXRwcmVjaXNpb24oNCkgPDwgZml4ZWQ7CiAgICBjb3V0IDw8ICJFeGVjdXRpb24gdGltZTogIiA8PCBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPj4oZW5kIC0gYmVnaW4pLmNvdW50KCkKICAgICAgICAgPDwgIiBzZWNvbmRzIiA8PCBlbmRsOwojZW5kaWYKfQoKCg==