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.lang.*;
import java.io.*;
public class Main 
{ 
    static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            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; 
        } 
    } 
    static FastReader s = new FastReader();
    public static void solve(){
        int n = s.nextInt();
        int k = s.nextInt();
        HashMap<Integer,Integer> ans = new HashMap<>();
        Queue<Integer> q = new PriorityQueue<>();
        int i;
        for(i=0;i<=30;i++){
            // System.out.println(n+" "+i+" "+(1<<i));
            if((n & (1<<i))>0){
                // System.out.println(1<<i);
                if(i>0)
                    q.add(1<<i);
                if(ans.get(1<<i)==null){
                    ans.put(1<<i,1);
                }else{
                    ans.put(1<<i,ans.get(1<<i)+1);
                }
                // System.out.println(ans);
            }
        }
        if(ans.size()>k){
            // System.out.println("NO");
            System.out.println("NO");
            return;
        }
        int cnt = ans.size();
        // System.out.println(ans);
        // System.out.println(q);
        while(cnt<k & q.isEmpty()==false){
            // if(cnt<10){
            // System.out.println(q);
            // System.out.println(ans);
            // }
            int temp = q.poll();
            int freq = ans.get(temp);
            ans.put(temp,freq-1);
            if((temp/2)>1){
                q.add(temp/2);
                q.add(temp/2);
            }
            if(ans.get(temp/2)==null){
                ans.put(temp/2,2);
            }else{
                ans.put(temp/2,ans.get(temp/2)+2);
            }       
            cnt++;
        }
        if(cnt<k){
            // System.out.println(cnt+" "+k);
            System.out.println("NO");
            return;
        }
        // System.out.println(ans);
        System.out.println("YES");
        for(int key:ans.keySet()){
            for(i=0;i<ans.get(key);i++){
                System.out.print(key+" ");
            }
        }
    }
    public static void main(String[] args) 
    {  
        int T=1;
        // T = s.nextInt();
        while(T>0){
            // System.out.println("TEST CASE: "+T);
            solve();
            T--;
        }
    } 
}
class Pair{
    int first;
    int second;
    Pair(int a,int b){
        this.first = a;
        this.second = b;
    }
    
}