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.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;
import javafx.scene.shape.TriangleMesh;

/**
 *
 * @author USER
 */
public class Cf {
    static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
    
    static class BufPrint
    {
        final BufferedWriter bw;
        public BufPrint()
        {
            this.bw=new BufferedWriter(new OutputStreamWriter(System.out));
        }
        public void print(Object object)throws IOException
        {
            bw.append(""+object);
        }
        public void println(Object object)throws IOException
        {
            print(object);
            bw.append("\n");
        }
        public void close()throws IOException
        {
            bw.close();
        }
    }
    

        public static int GCD(int l,int r) {
        int gcd=1;
        for(int i = 1; i <= l && i <= r; ++i)
        {
            // Checks if i is factor of both integers
            if(l % i==0 && r % i==0)
                gcd = i;
        }
    return gcd;
}
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException{
        // TODO code application logic here
        
            FastReader sc=new FastReader(); 
            BufPrint bp=new BufPrint();
          
                int t=sc.nextInt();
                
                
                for(int k=0;k<t;k++){
                    
                
                int n=sc.nextInt();
                
                int k1=sc.nextInt();
                
                int c=0;
                int[] a=new int[k1];
                
                if(k1<=n){
                if(n%2==0 && k1%2!=0)
                { 
                    if(k1<=(n/2)){
                    bp.println("YES");
                    for(int i=0;i<k1-1;i++)
                    {
                        bp.print(2+" ");
                        n=n-2;
                    }
                    bp.print(n);
                    }
                    else 
                    {
                        bp.print("NO");
                    }
                }
                else if(n%2==0 && k1%2==0)
                { 
                    if(k1<=(n/2)){
                    bp.println("YES");
                    for(int i=0;i<k1-1;i++)
                    {
                        bp.print(2+" ");
                        n=n-2;
                    }
                    bp.print(n);
                    }
                    else 
                    {
                        bp.println("YES");
                    for(int i=0;i<k1-1;i++)
                    {
                        bp.print(1+" ");
                        n=n-1;
                    }
                    bp.print(n);
                    }
                }
                else if(n%2!=0 && k1%2!=0)
                {
                    bp.println("YES");
                    for(int i=0;i<k1-1;i++)
                    {
                        bp.print(1+" ");
                        n=n-1;
                    }
                    bp.print(n);
                }
                else if(n%2!=0 && k1%2==0)
                {
                    bp.print("NO");
                }
                
                }
                else
                {
                    bp.print("NO");
                }
                
//                bp.println(c);
//                for(int j=0;j<a.length;j++)
//                {
//                    if(a[j]!=0){
//                    bp.print(a[j]+" ");
//                    }
//                }
                

                bp.println("");
    }

                bp.close();
            
    }
}