description: You are given an array consisting of all integers from [l, r] inclusive. For example, if l = 2 and r = 5, the array would be [2, 3, 4, 5]. What's the minimum number of elements you can delete to make the [bitwise AND](https://en.wikipedia.org/wiki/Bitwise_operation#AND) of the array non-zero?
  
  A bitwise AND is a binary operation that takes two equal-length binary representations and performs the AND operation on each pair of the corresponding bits.
  
  Input
  
  The first line contains one integer t (1 ≤ t ≤ 10^4) — the number of test cases. Then t cases follow.
  
  The first line of each test case contains two integers l and r (1 ≤ l ≤ r ≤ 2 ⋅ 10^5) — the description of the array.
  
  Output
  
  For each test case, output a single integer — the answer to the problem.
  
  Example
  
  Input
  
  
  5
  1 2
  2 8
  4 5
  1 5
  100000 200000
  
  
  Output
  
  
  1
  3
  0
  2
  31072
  
  Note
  
  In the first test case, the array is [1, 2]. Currently, the bitwise AND is 0, as 1\ \& \ 2 = 0. However, after deleting 1 (or 2), the array becomes [2] (or [1]), and the bitwise AND becomes 2 (or 1). This can be proven to be the optimal, so the answer is 1.
  
  In the second test case, the array is [2, 3, 4, 5, 6, 7, 8]. Currently, the bitwise AND is 0. However, after deleting 4, 5, and 8, the array becomes [2, 3, 6, 7], and the bitwise AND becomes 2. This can be proven to be the optimal, so the answer is 3. Note that there may be other ways to delete 3 elements.
solution: #include <bits/stdc++.h>
  using namespace std;
  long long gcd(long long a, long long b) {
    if (b == 0) return a;
    return gcd(b, a % b);
  }
  long long extgcd(long long a, long long b, long long& x, long long& y) {
    if (b == 0) {
      x = 1;
      y = 0;
      return a;
    }
    long long x1, y1;
    long long d = extgcd(b, a % b, x1, y1);
    x = y1;
    y = x1 - y1 * (a / b);
    return d;
  }
  long long revrsno(long long n) {
    long long k = 0;
    vector<long long> z;
    while (n > 0) {
      z.push_back(n % 10);
      n /= 10;
    }
    for (long long i = 0; i < z.size(); i++) k = k * 10 + z[i];
    return k;
  }
  bool isPrime(long long n) {
    if (n <= 1) return false;
    if (n <= 3) return true;
    if (n % 2 == 0 || n % 3 == 0) return false;
    for (long long i = 5; i * i <= n; i = i + 6)
      if (n % i == 0 || n % (i + 2) == 0) return false;
    return true;
  }
  bool isPowerOfTwo(long long n) {
    if (n == 0) return false;
    return (ceil(log2(n)) == floor(log2(n)));
  }
  long long powm(long long a, long long b) {
    long long res = 1;
    while (b) {
      if (b & 1) res = (res * a) % 1000000007;
      a = (a * a) % 1000000007;
      b >>= 1;
    }
    return res;
  }
  long long divide(long long a, long long b) {
    return (a % 1000000007) * powm(b, 1000000007 - 2) % 1000000007;
  }
  long long mul(long long a, long long b) {
    return ((a % 1000000007) * (b % 1000000007)) % 1000000007;
  }
  long long add(long long a, long long b) {
    return (a % 1000000007 + b % 1000000007) % 1000000007;
  }
  long long Totfun(long long n) {
    long long z = n;
    if (n % 2 == 0) {
      while (n % 2 == 0) {
        n /= 2;
      }
      z /= 2;
    }
    for (long long i = 3; i <= sqrt(n); i += 2) {
      if (isPrime(i) && n % i == 0) {
        while (n % i == 0) {
          n /= i;
        }
        z -= z / i;
      }
    }
    if (n > 1) {
      z -= z / n;
    }
    return z;
  }
  long long maxPrimeFactor(long long n) {
    long long maxPrime = -1;
    while (n % 2 == 0) {
      maxPrime = 2;
      n >>= 1;
    }
    for (long long i = 3; i <= sqrt(n); i += 2) {
      while (n % i == 0) {
        maxPrime = i;
        n = n / i;
      }
    }
    if (n > 2) maxPrime = n;
    return maxPrime;
  }
  long long fact[100001];
  long long nCr(long long n, long long r) {
    if (r > n || r < 0) return 0;
    long long z = fact[n];
    z = mul(z, powm(fact[n - r], 1000000007 - 2));
    z = mul(z, powm(fact[r], 1000000007 - 2));
    return z;
  }
  long long v[200001][19];
  void cal() {
    for (long long i = 0; i < 19; i++) {
      for (long long j = 1; j < 200001; j++) {
        if ((j & (1 << i)))
          v[j][i] = 1;
        else
          v[j][i] = 0;
      }
    }
    for (long long i = 0; i < 19; i++) {
      for (long long j = 1; j < 200001; j++) {
        v[j][i] += v[j - 1][i];
      }
    }
  }
  void solve() {
    long long l, r;
    cin >> l >> r;
    long long ans = 1e9;
    for (long long i = 0; i < 19; i++) {
      ans = ((ans > (r - l + 1) - (v[r][i] - (v[l - 1][i])))
                 ? (r - l + 1) - (v[r][i] - (v[l - 1][i]))
                 : ans);
    }
    cout << ans << endl;
  }
  int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    long long t;
    cin >> t;
    cal();
    while (t--) {
      solve();
      cout << endl;
    }
    return 0;
  }
  