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:
//package CodeForces;

import java.util.ArrayList;
import java.util.Scanner;

public class PowersOfTwo {
	
	static boolean solve(int n,int k,ArrayList<Integer> arr)
	{
		if(n==0&&k==0)
		{
			System.out.println("YES");
			for(int i:arr)
			{
				System.out.print(i+" ");
			}
			return true;
		}
		
		if(n<0||k<0)
		{
			return false;
		}
		
		for(int i=0;n-(int)Math.pow(2,i)>=0;i++)
		{
			arr.add((int)Math.pow(2,i));
			boolean ans=solve(n-(int)Math.pow(2,i),k-1,arr);
			if(ans==true)
			{
				return true;
			}
			arr.remove(arr.size()-1);
		}
		return false;
	}
	
	static void solve2(int n,int k,ArrayList<Integer> arr)
	{
		while(n!=0)
		{
			int no=get(n);
			arr.add(no);
			n=n-no;
			k=k-1;
		}
		
		if(k<0)
		{
			System.out.println("NO");
			return;
		}
		else
		{
			for(int i=0;i<arr.size()&&k>0;)
			{
				if(arr.get(i)!=1)
				{
					arr.set(i,arr.get(i)/2);
					arr.add(arr.get(i));
					k=k-1;
				}
				else
				{
					i=i+1;
				}
			}
			
			if(k==0)
			{
				System.out.println("YES");
				for(int m:arr)
				{
					System.out.print(m+" ");
				}
			}
			else
			{
				System.out.println("NO");
			}
		}
	}
	
	static int get(int n)
	{
		int ans=0;
		for(int i=1;i<=n;)
		{
			ans=i;
			i=i*2;
		}
		return ans;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner s=new Scanner(System.in);
		int n=s.nextInt();
		int k=s.nextInt();
		ArrayList<Integer> arr=new ArrayList<>();
		solve2(n,k,arr);
	}

}