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 JAVA):

Solution:
'use strict';

let t = parseInt(readline(), 10);

while (t--) {
    const parts = readline().split(' ');
    let n = parseInt(parts[0], 10);
    let k = parseInt(parts[1], 10);

    if (k > n) {
        print('NO');
        continue;
    }

    function helper(N, K, result, subs) {
        while (N > 0 && K > 0) {
            if (
                N % K === 0 &&
                (N / K) % 2 === (subs === 2 ? 0 : 1)
            ) {
                const div = N / K;
                N -= div;
                K -= 1;
                result.push(div);
            } else {
                N -= subs;
                K -= 1;
                result.push(subs);
            }
        }
        return {N, K, result};
    }

    const resultOdd = helper(n, k, [], 1);
    const resultEven = helper(n, k, [], 2);

    if (resultOdd.N === 0 && resultOdd.K === 0) {
        print('YES');
        print(resultOdd.result.join(' '));
    } else if (resultEven.N === 0 && resultEven.K === 0) {
        print('YES');
        print(resultEven.result.join(' '));
    } else {
        print('NO');
    }
}