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:
# Template 1.0
import sys, re, math
from collections import deque, defaultdict, Counter, OrderedDict
from math import ceil, sqrt, hypot, factorial, pi, sin, cos, radians, gcd
from heapq import heappush, heappop, heapify, nlargest, nsmallest
def STR(): return list(input())
def INT(): return int(input())
def MAP(): return map(int, input().split())
def LIST(): return list(map(int, input().split()))
def list2d(a, b, c): return [[c] * b for i in range(a)]
def sortListWithIndex(listOfTuples, idx):   return (sorted(listOfTuples, key=lambda x: x[idx]))
def sortDictWithVal(passedDic):
    temp = sorted(passedDic.items(), key=lambda kv: (kv[1], kv[0]))[::-1]
    toret = {}
    for tup in temp:
        toret[tup[0]] = tup[1]
    return toret
def sortDictWithKey(passedDic):
    return dict(OrderedDict(sorted(passedDic.items())))
sys.setrecursionlimit(10 ** 9)
INF = float('inf')
mod = 10 ** 9 + 7


t = INT()

while (t != 0):

    n, k= MAP()

    # if(k%2==0 and n%2!=0):
    #     print("NO")
    # elif(k%2==0 and n%2==0):
    #     if(n<k):
    #         print("NO")
    #     else:
    #         quot = n//k
    #         l = [quot]*(k-1)
    #         l.append(n-quot*(k-1))
    #         print("YES")
    #         print(*l)
    # elif(k%2!=0 and n%2==0):
    #     quot=n//k
    #     l=[quot]*(k-1)
    #     if((n-quot*(k-1))%2!=0):
    #         print("YES")
    #         l.append(n-quot*(k-1))
    #         print(*l)
    #     else:
    #         print("NO")
    #
    # else:
    #     l = [1]*(k-1)
    #     if((k-1)%2!=0):
    #         print("YES")
    #         l.append(k-1)
    #         print(*l)
    #     else:
    #         print("NO")


    l = [1]*(k-1)
    if((n-(k-1))%2!=0 and (n-k+1)>0):
        print("YES")
        l.append(n-k+1)
        print(*l)
    else:
        l = [2]*(k-1)
        if((n-2*(k-1))%2==0 and (n-2*k+2)>0):
            print("YES")
            l.append(n-2*(k-1))
            print(*l)
        else:
            print("NO")

    t -= 1