Problem: You are given two positive integers n (1 ≤ n ≤ 10^9) and k (1 ≤ k ≤ 100). Represent the number n as the sum of k positive integers of the same parity (have the same remainder when divided by 2).

In other words, find a_1, a_2, …, a_k such that all a_i>0, n = a_1 + a_2 + … + a_k and either all a_i are even or all a_i are odd at the same time.

If such a representation does not exist, then report it.

Input

The first line contains an integer t (1 ≤ t ≤ 1000) — the number of test cases in the input. Next, t test cases are given, one per line.

Each test case is two positive integers n (1 ≤ n ≤ 10^9) and k (1 ≤ k ≤ 100).

Output

For each test case print:

  * YES and the required values a_i, if the answer exists (if there are several answers, print any of them); 
  * NO if the answer does not exist. 



The letters in the words YES and NO can be printed in any case.

Example

Input


8
10 3
100 4
8 7
97 2
8 8
3 10
5 3
1000000000 9


Output


YES
4 2 4
YES
55 5 5 35
NO
NO
YES
1 1 1 1 1 1 1 1
NO
YES
3 1 1
YES
111111110 111111110 111111110 111111110 111111110 111111110 111111110 111111110 111111120

Solution (in PYTHON3):

Solution:
def isodd(a):
    if (int(a) % 2 == 0):
        return False
    else:
        return True
def iseven(b):
    if (int(b) % 2 == 0):
        return True
    else:
        return False
t=input()
num=[]
num_num=[]
yes_no=[]
kth=[]
for i in range(int(t)):
    n,k=input().split(" ")
    kth.append(int(k))
    if int(k)>int(n):
        yes_no.append("NO")
    elif int(n)%int(k)==0:
        yes_no.append("YES")
        num.append(str(int(int(n)/int(k))))
        x=int(int(n)/int(k))
        num_num.append((str(x)+" ")*(int(k)-1))
    elif isodd(n)==True and iseven(k)==True:
        yes_no.append("NO")
    elif isodd(n)==True and isodd(k)==True:
        if int(n)>=int(k):
            num.append(str(int(int(n)-int(k)+1)))
            x=int(int(n)-(int(n)-int(k)+1))
            num_num.append("1 "*x)
            yes_no.append("YES")
        else:
            yes_no.append("NO")
    elif iseven(n)==True and isodd(k)==True:
        if int(n)>=int(k)*2:
            x = int((int(n) - ((int(k) - 1))*2))
            yes_no.append("YES")
            num.append(str(x))
            num_num.append("2 "*(int(k)-1))
        else:
            yes_no.append("NO")

    elif iseven(n)==True and iseven(k)==True:
        if int(n)>=int(k)*2:
            x = int(int(k)-1)
            yes_no.append("YES")
            num.append(str(int(n)-(int(x)*2)))
            num_num.append("2 "*x)
        else:
            num.append(str(int(int(n) - int(k) + 1)))
            x = int(int(n) - (int(n) - int(k) + 1))
            num_num.append("1 " * x)
            yes_no.append("YES")
    #print("test case : "+str(i))
cnt=0
for i in range(int(t)):
    if yes_no[i]=="NO":
        print(yes_no[i])
        #print("test case : " + str(i))
        cnt+=1
    elif yes_no[i]=="YES":
        #print("test case : " + str(i))
        print(yes_no[i])
        print(num[i-cnt],end=" ")
        print("".join(num_num[i-cnt]))