#############################################################

import sys
sys.setrecursionlimit(10**7)

from heapq import heappop,heappush
from collections import deque,defaultdict,Counter
from bisect import bisect_left, bisect_right
from itertools import product,combinations,permutations

ipt = sys.stdin.readline

def iin():
    return int(ipt())
def lmin():
    return list(map(int,ipt().split()))

MOD = 998244353
#############################################################

M = 110
for _ in range(iin()):
    D,K = lmin()

    ans = []
    for i in range(-M,M):
        for j in range(-M,M):
            if abs(i)+abs(j) == D:
                ans.append((i**2+j**2,i,j))
    
    if len(ans) < K:
        print("No")
    else:
        ans.sort()
        print("Yes")
        print(*ans[K-1][1:])