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:
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.HashMap;
import java.util.Scanner;

public class CF640n2 {
    public static void main(String[] args) throws IOException {
        Scanner scan = new Scanner(System.in);
        BufferedWriter log = new BufferedWriter(new OutputStreamWriter(System.out));
        //log.write() //log.flush()
        int t = scan.nextInt();
        int count = 1;
        while (t-- > 0) {
            long n = scan.nextLong();
            int k = scan.nextInt();
            int counter = 0;
            int factor = 1;
            boolean solve = true;
            boolean odd = false;

            if(n%2 ==1 && k%2==0){
                solve = false;
            }
            else if(n%2 == 1){
                odd = true;
            }

            if(odd && n<k){
                solve = false;
            }
            if(!odd && (n/2)<k){
                solve = false;
            }

            if(n%2 == 0 && k%2 == 0 && (n/2)<k && n>=k){
                odd = true;
                solve = true;
            }

//            if(!odd && (n/2)>k){
//                solve = false;
//            }
//            if(!solve && !odd && (n/2)>k){
//                if(n<k){
//                    odd = true;
//                    solve = true;
//                }
//                else {
//                    solve = false;
//                }
//            }
            ArrayList<Long> arr = new ArrayList<>();
            if(solve) {
                if(odd){

                    for(int i = 0; i<k-1;i++){
                        arr.add(1L);
                    }
                    arr.add(n-(k-1));
                }
                else{
                    for(int i = 0; i<k-1;i++){
                        arr.add(2L);
                    }
                    arr.add(n-((k-1)*2));
                }

            }



            if(solve) {
                log.write("" + "YES" + "\n");
                for (Long num : arr) {
                    log.write("" + num + " ");
                }
                log.write("\n");
            }
            else{
                log.write("" + "NO" + "\n");
            }
            //System.out.println(colRep);
            count++;
        }
        log.flush();


    }
}