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.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.*;


public class PowersOfTwo {

	static class FastScanner 
	{ 
		BufferedReader br; 
		StringTokenizer st; 

		public FastScanner() 
		{ 
			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; 
		} 
	} 

public static void main(String[] args){
      FastScanner f=new FastScanner();
      int n=f.nextInt();
      int k=f.nextInt();
      PriorityQueue<Integer> p=new PriorityQueue<>(Collections.reverseOrder());
      int nsb=setBits(n);
      if(k<nsb||k>n) {
    	  System.out.println("NO");
    	  return;
      }
      
      int temp=n;
      int pow=0;
      while(temp>0) {
    	   int sub=temp&1;
    	   if(sub!=0) {
    		   p.add((int)Math.pow(2,pow));
    	   }
    	   temp=temp>>1;
    	   pow++;
      }
      
      while(p.size()!=k) {
    	  int curr=p.poll();
    	  int first=curr/2;
    	  int sec=curr-first;
    	  p.add(first);
    	  p.add(sec);
      }
      System.out.println("YES");
      while(p.isEmpty()==false) {
    	  System.out.print(p.poll()+" ");
      }
      System.out.println();
      
}


static int highestPowerof2(int n) 
{ 
      
    int p = (int)(Math.log(n) /  
                  Math.log(2)); 
    return (int)Math.pow(2, p);  
} 
//BRIAN KERNINGHAM TO CHECK NUMBER OF SET BITS
	//O(LOGn)
	static int setBits(int n) {
		int count=0;
		while(n>0) {
			n=n&(n-1);
			count++;
		}
		return count;
	}
	
	//0 based indexing
	static boolean KthBitSet(int n,int k) {
		int mask=1;
		mask=mask<<=k;
		if((mask&n)!=0) return true;
		else return false;
	}

}