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.ArrayList;
import java.util.List;
import java.util.Scanner;

public class PowerTwo {
	private static int[] powers=new int[32];
	static{
		powers[0]=1;
		int val=1;
		for(int i=1;i<=31;i++){
			val=val*2;
			powers[i]=val;
		}
	}
	
	private static double log2b(int a){
		return Math.log(a)/Math.log(2);
	}
	
	public static void printPowerSum(int n, int k){
		List<Integer> result=new ArrayList<>();
		int i=k-1;
		int remsum=n;
		while(remsum > 0 && i >=0){
			int temp=remsum-i;
			if(temp < 1)
				break;
			int logTwoVal=(int)log2b(temp);
			//System.out.println(logTwoVal);
			result.add(powers[logTwoVal]);
			remsum=remsum-powers[logTwoVal];
			//System.out.println("New temp : "+remsum);
			i=i-1;
		}
		
		if(remsum==0 && i < 0){
			System.out.println("YES");
			int len=result.size();
			for(int l=len-1;l>=0;l--){
				System.out.print(result.get(l));
				System.out.print(" ");
			}
		}
		else
			System.out.println("NO");
	}

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int k=sc.nextInt();
		PowerTwo.printPowerSum(n, k);
	}

}