#include <bits/stdc++.h>
template <typename T>
void RBIT(T a) {
  if (a >> 1) RBIT(a >> 1);
  printf("%d", a & 1);
}
using namespace std;
long long int getrec(int a) {
  long long int ret = 0;
  for (int i = 0; i < a; i++) {
    ret += (1 << (i + 1)) - 1;
  }
  return ret;
}
long long int getget(int a) {
  a = min(32, a);
  long long int ret = 0;
  for (long long int i = 0; i < a; i++) {
    ret += 1ll << (i * 2);
  }
  return ret;
}
int main() {
  int tc;
  scanf("%d", &tc);
  while (tc--) {
    long long int n, k;
    scanf("%lld %lld", &n, &k);
    int cap = min(n, 32ll);
    int ans = -1;
    long long int w = 0;
    long long int maxi = 0;
    for (int i = 0; i <= cap; i++) {
      long long int mini = getrec(i);
      if (i >= 1) {
        w = w * 2 + 1;
        if (n - i >= 0) {
          maxi += (2 * w - 1) * getget(n - i);
        }
      }
      if (mini <= k && k <= maxi + mini) {
        ans = i;
        break;
      }
    }
    if (ans != -1)
      printf("YES %d\n", n - ans);
    else
      printf("NO\n");
  }
}
