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.util.*;


import java.io.*;
	import java.math.*;
	import java.awt.geom.*;
	 
	import static java.lang.Math.*;
	 
	 public class Solution implements Runnable {
		
		 
	    public void solve() throws Exception {
	    	
	    	int t=sc.nextInt();
	    	while(t-->0)
	    	{
	    		int n=sc.nextInt();
	    		int k=sc.nextInt();
	    		if(k>n)
	    		{
	    			out.println("NO");
	    			continue;
	    		}
	    		if(n%2==0)
	    		{
	    			if(k>n/2)
	    			{
	    				if(k%2==0)
	    				{
	    					out.println("YES");
	    					k--;
		    				while(k-->0)
		    				{
		    					out.print("1 ");
		    					n--;
		    				}
		    				out.print(n);
		    				out.println();
	    				}
	    				else out.println("NO");
	    				
	    			}
	    			else
	    			{
	    				out.println("YES");
	    				k--;
	    				while(k-->0)
	    				{
	    					out.print(2+" ");
	    					n-=2;
	    				}
	    				if(n!=0)
	    					out.print(n);
	    				out.println();
	    			}
	    		}
	    		else
	    		{
	    			if(k>n || k%2==0)
	    			{
	    				out.println("NO");
	    				
	    			}
	    			else
	    			{
	    				out.println("YES");
	    				k--;
	    				while(k-->0)
	    				{
	    					out.print("1 ");
	    					n--;
	    				}
	    				out.print(n);
	    				out.println();
	    			}
	    		}
	    		
	    		
	    	}
	    }
	    		
	    		
	    		
	    		
	    	
	    
	    		
	    		
	    		
	    		
	   
	    
	   
	    
	    static long power(long x, long y, long p) 
	    { 
	       
	        long res = 1;      
	       
	        x = x % p;  
	  
	       if (x == 0) return 0;    
	  
	        while (y > 0) 
	        { 
	            if((y & 1)==1) 
	                res = (res * x) % p; 
	            y = y >> 1;  
	            x = (x * x) % p;  
	        } 
	        return res; 
	    } 
	    
	    		
	    
	    
	    
	    
	    
	    static Throwable uncaught;
	 
	    BufferedReader in;
	    FastScanner sc;
	    PrintWriter out;
	 
	    @Override
	    public void run() {
	        try {
	            in = new BufferedReader(new InputStreamReader(System.in));
	            out = new PrintWriter(System.out);
	            sc = new FastScanner(in);
	            solve();
	        } catch (Throwable uncaught) {
	            Solution.uncaught = uncaught;
	        } finally {
	            out.close();
	        }
	    }
	 
	    public static void main(String[] args) throws Throwable {
	        Thread thread = new Thread(null, new Solution(), "", (1 << 26));
	        thread.start();
	        thread.join();
	        if (Solution.uncaught != null) {
	            throw Solution.uncaught;
	        }
	    }
	 
	}
	 
	class FastScanner {
	 
	    BufferedReader in;
	    StringTokenizer st;
	 
	    public FastScanner(BufferedReader in) {
	        this.in = in;
	    }
	 
	    public String nextToken() throws Exception {
	        while (st == null || !st.hasMoreTokens()) {
	            st = new StringTokenizer(in.readLine());
	        }
	        return st.nextToken();
	    }
	 
	    public int nextInt() throws Exception {
	        return Integer.parseInt(nextToken());
	    }
	    
	    public int[] readArray(int n) throws Exception {
			int[] a=new int[n];
			for (int i=0; i<n; i++) a[i]=nextInt();
			return a;
		}
	 
	    public long nextLong() throws Exception {
	        return Long.parseLong(nextToken());
	    }
	 
	    public double nextDouble() throws Exception {
	        return Double.parseDouble(nextToken());
	    }
	 
	}