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.*;
public class Main
{
    
    
	public static void main(String[] args) {
	    Scanner sc=new Scanner(System.in);
	    int n=sc.nextInt();
	    int k=sc.nextInt();
	    int a[]=new int[k];
	    for(int i=0;i<k;i++)
	    {
	        a[i]=1;
	    }
	    int sum=k;
	    
	    for(int i=k-1;i>=0;i--)
	    {
	        
	       while(sum+a[i]<=n) 
	       {
	           sum+=a[i];
	           a[i]*=2;
	       }
	        
	    }
	    if(sum==n){
	       System.out.println("YES");
	    
	    for(int i=0;i<k;i++)
	    {
	        System.out.print(a[i]+" ");
	    }}
	    else
	    System.out.print("NO");
	}
}