# わかりにくい文章 T = int(input()) for t in range(T): d, k = map(int, input().split()) count = [4]*(d+1) distance = [0]*(d+1) for i in range((d+1)//2, d+1): if i == d//2 or i == d: distance[i] = count[i] else: distance[i] = count[i]*2 cumu = [] temp = 0 for i in range(d+1): temp += distance[i] cumu.append(temp) #print(count) #print(distance) #print(cumu) from bisect import * if d == 0: if k == 1: print('Yes') print(0, 0) else: print('No') else: if k > cumu[-1]: print('No') else: print('Yes') idx = bisect_left(cumu, k) x = idx y = d-idx print(x, y)