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:
/*
    Aman Agarwal
    algo.java
*/

import java.util.*;
import java.io.*;

public class B1
{
    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 FastReader sc = new FastReader();
    static PrintWriter out = new PrintWriter(System.out);
    static int ni()throws IOException{return sc.nextInt();}
    static long nl()throws IOException{return sc.nextLong();}
    static int[] nai(int N,int start)throws IOException{int[]A=new int[N+start];for(int i=start;i!=(N+start);i++){A[i]=ni();}return A;}
    static long[] nal(int N)throws IOException{long[]A=new long[N];for(int i=0;i!=N;i++){A[i]=nl();}return A;}
    static long gcd(long a, long b)throws IOException{return (b==0)?a:gcd(b,a%b);}
    static int gcd(int a, int b)throws IOException{return (b==0)?a:gcd(b,a%b);}
    static int bit(long n)throws IOException{return (n==0)?0:(1+bit(n&(n-1)));}
    static boolean isPrime(int number){if (number == 2 || number == 3){return true;}if (number % 2 == 0) {return false;}int sqrt = (int) Math.sqrt(number) + 1;for(int i = 3; i < sqrt; i += 2){if (number % i == 0){return false;}}return true;}
    static int power(int n,int p){if(p==0)return 1;int a = power(n,p/2);a = a*a;int b = p & 1;if(b!=0){a =  n*a;}return a;}
    static long power(long n,long p){if(p==0)return 1;long a = power(n,p/2);a = a*a;long b = p & 1;if(b!=0){a =  n*a;}return a;}
    static void reverse(int[] a) {int b;for (int i = 0, j = a.length - 1; i < j; i++, j--) {b = a[i];a[i] = a[j];a[j] = b;}}
    static void reverse(long[] a) {long b;for (int i = 0, j = a.length - 1; i < j; i++, j--) {b = a[i];a[i] = a[j];a[j] = b;}}
    static void swap(int a[],int i,int j){int temp = a[i];a[i] = a[j];a[j] = temp;}
    static void swap(long a[],int i,int j){long temp = a[i];a[i] = a[j];a[j] = temp;}

    /*-------------------------Main Code Starts(algo.java)----------------------------------*/

    public static void main(String[] args) throws IOException 
    {
        int t = 1;
        t = sc.nextInt();
        while(t-- > 0)
        {
            long a = nl();
            long b = nl();
            String ans;

            if(a==b)
            {
                out.println("YES");
                for(int i=0;i<a;i++)
                    out.print(1+" ");
                out.println();
                out.flush();
                continue;
            }
            if(a<1 || b<1 || a<b)
            {
                out.println("NO");
                out.flush();
                continue;
            }

            if(a%2==1 && b%2==0)
            { 
                out.println("NO");
                out.flush();
                continue;
            }
            else
            {
                if(a%2==1)
                {
                    if(a>=b)
                    {
                        out.println("YES");
                        for(int i=0;i<b-1;i++)
                            out.print(1+" ");
                        out.println(a-b+1);
                        out.flush();
                        continue;
                    }
                    else
                    {
                        out.println("NO");
                        out.flush();
                        continue;
                    }
                }
                else
                {
                    if(b%2==0)
                    {
                        out.println("YES");
                        for(int i=0;i<b-1;i++)
                            out.print(1+" ");
                        out.println(a-(b-1));
                        out.flush();
                    }
                    else
                    {
                        if(a>=2*b)
                        {
                            out.println("YES");
                            for(int i=0;i<b-1;i++)
                                out.print(2+" ");
                            out.println(a-2*(b-1));
                            out.flush();
                            continue;
                        }
                        else
                        {
                            out.println("NO");
                            out.flush();
                            continue;
                        }
                    }
                }
            } 
        }    
    }
}