#include <bits/stdc++.h>
using namespace std;
const int dr[] = {-1, 0, 1, 0, -1, -1, 1, 1};
const int dc[] = {0, -1, 0, 1, -1, 1, -1, 1};
const int N = 35;
long long dp[N][2][2][2];
int l, r;
bool True(int x, int i) { return (x >> i) & 1; }
bool False(int x, int i) { return !((x >> i) & 1); }
long long dfs(int i, int j, int k, int gre) {
  if (i < 0) return 1;
  long long &ans = dp[i][j][k][gre];
  if (ans > -1) return ans;
  ans = 0;
  if (False(l, i) || k) ans += dfs(i - 1, j | True(r, i), k, gre);
  if ((j || True(r, i)) && (k || False(l, i))) ans += dfs(i - 1, j, k, 1);
  if (gre) ans += dfs(i - 1, j | True(r, i), k | False(l, i), gre);
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  int T;
  cin >> T;
  while (T--) {
    cin >> l >> r;
    memset(dp, -1, sizeof(dp));
    long long ans = dfs(29, 0, 0, 0) * 2;
    if (l == 0) --ans;
    cout << ans << '\n';
  }
  return 0;
}
