Problem: A positive integer x is called a power of two if it can be represented as x = 2^y, where y is a non-negative integer. So, the powers of two are 1, 2, 4, 8, 16, ....

You are given two positive integers n and k. Your task is to represent n as the sum of exactly k powers of two.

Input

The only line of the input contains two integers n and k (1 ≤ n ≤ 10^9, 1 ≤ k ≤ 2 ⋅ 10^5).

Output

If it is impossible to represent n as the sum of k powers of two, print NO.

Otherwise, print YES, and then print k positive integers b_1, b_2, ..., b_k such that each of b_i is a power of two, and ∑ _{i = 1}^{k} b_i = n. If there are multiple answers, you may print any of them.

Examples

Input


9 4


Output


YES
1 2 2 4 


Input


8 1


Output


YES
8 


Input


5 1


Output


NO


Input


3 7


Output


NO

Solution (in JAVA):

Solution:
import java.util.*;
import java.io.*;
public class A
{
      public static void main(String ar[]) throws Exception
      {
            BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
            String s1[]=br.readLine().split(" ");
            int n=Integer.parseInt(s1[0]);
            int k=Integer.parseInt(s1[1]);
            
            int a[]=new int[32];
            int j=0,x=0;
            int m=n;
            while(m>=1)
            {
                  a[j]=m%2;
                  if(a[j]==1)
                   x++;
                  m=m/2;
                  j++;
            }
            
           // System.out.println(x);
           //System.out.println(Arrays.toString(a));
            if(x>k || k>n)
             System.out.println("NO");
            else
            {
                  for(int i=31;i>0;i--)
                  {
                        if(k-x>=a[i])
                        { a[i-1]+=2*a[i]; x+=a[i]; a[i]=0; }
                        else
                        {
                             int u=k-x;
                             a[i-1]+=2*u;
                             a[i]-=u;
                             x+=u;
                        }
                  }
                  
                  StringBuffer sb=new StringBuffer();
                  for(int i=0;i<32;i++)
                  {
                        long p=(long)Math.pow(2,i);
                        for(int l=0;l<a[i];l++)
                         sb.append(p).append(" ");
                  }
                  System.out.println("YES");
                  System.out.println(sb);
            }
      }
}