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:
/* package codechef; // don't place package name! */
 
import java.util.*;
import java.lang.*;
import java.io.*;
 
/* Name of the class has to be "Main" only if the class is public. */
 public class Codechef
{
   public static void main (String[] args) throws java.lang.Exception
	{
	    
// -----------------------------Fast IO using BufferedReader-----------------------------------------------------------------	    
 
		 BufferedReader br = new BufferedReader( 
                              new InputStreamReader(System.in)); 
  
        StringTokenizer st = new StringTokenizer(br.readLine());
         PrintWriter out = new PrintWriter(System.out); 
        int T = Integer.parseInt(st.nextToken()); 
        
// ----------------------------------------------------------------------------------------------------------	    
   
		while(T-- >0)
		{
		   String arr[]=br.readLine().split(" "); 
          long N=Long.parseLong(arr[0]);
          long K=Long.parseLong(arr[1]);
		  List<Long> list=new ArrayList<>();
		  List<Long> list1=new ArrayList<>();
		  long sum=0,sum1=0;
		  for(int i=0;i<K-1;i++)
		  {
		      list.add((long)1);
		  }
		  for(int i=0;i<K-1;i++)
		  {
		      list1.add((long)2);
		  }
		  
		  sum=K-1;
		  sum1=2*(K-1);
		  
		  long cal=N-sum;
		  long cal1=N-sum1;
		  
		  if(K>N)
		  out.println("NO");
		  
		  else if(cal%2!=0)
		  {
		      out.println("YES");
		      for(int i=0;i<K-1;i++)
		      out.print(list.get(i)+" ");
		      out.println(N-sum);
		  }
		  else if(cal1%2==0 && cal1>0)
		  {
		      out.println("YES");
		      for(int i=0;i<K-1;i++)
		      out.print(list1.get(i)+" ");
		      out.println(cal1);
		  }
		  else
		  out.println("NO");
		  
		        
		}
		out.close();   
	}
}