#include <bits/stdc++.h>
using namespace std;
typedef __int128 i128;
typedef long long ll;
const ll MOD = 1e9 + 7;
ll Q, l, r, L, R, fx, ans, p2[102];
char c;
inline ll lenth(ll X1, ll X2, ll Y1, ll Y2, ll Z1, ll Z2)
{
return max(min(min(X2, Y2), Z2) - max(max(X1, Y1), Z1) + 1, (ll)0);
}
inline void read(ll &x)
{
x = 0, c = getchar();
while (c < '0' || c > '9')
c = getchar();
while (c >= '0' && c <= '9')
x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
}
inline void write(ll x)
{
if (x > 9)
write(x / 10);
putchar((x % 10) ^ 48);
}
int main()
{
read(Q), p2[0] = 1;
for (int i = 1; i <= 60; i++)
p2[i] = p2[i - 1] * 2;
while (Q--)
{
read(l), read(r), fx = 1, ans = 0;
for (int i = 1; i <= 60; i++)
{
fx = i;
for (int j = 1; j <= 10; j++)
{
L = fx, fx = min((i128)fx * i, (i128)1e18 + 1), R = fx - 1,
(ans += j * lenth(L, R, p2[i], p2[i + 1] - 1, l, r) % MOD) %= MOD;
if (fx > p2[i + 1] - 1 || fx > r)
break;
}
}
write(ans), putchar('\n');
}
return 0;
}
这个是题解的