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 C {

    public static void main (String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        int k = s.nextInt();
        int ais = n;

        int jascnascnaj = skcasncakcnakcn(n);
        if(k <= ais && k >= jascnascnaj){
            ArrayList<Integer> ans = new ArrayList<>();
            String str = Integer.toBinaryString(n);
            int si = str.length();
            for (int i = 0; i < str.length(); i++) {
                if(str.charAt(i) == '1'){
                    ans.add(1 << (si - i - 1));
                }
            }

            Collections.sort(ans);
            int count = 0;
            if(ans.get(0) == 1){
                count++;
                ans.remove(0);
            }

            int last = ans.size() - 1;
            while((ans.size() + count) != k){
                last = ans.size() - 1;
                int num = ans.get(last);
                if(num != 2){

                    ans.remove(last);
                    ans.add(num / 2);
                    ans.add(num / 2);
                } else {
                    ans.remove(last);
                    count += 2;
                }

            }

            StringBuilder jgs = new StringBuilder();
            for (int j = ans.size() - 1; j >= 0; j--) {
                jgs.append(ans.get(j)+ " ");
            }
            for (int j = 0; j < count; j++) {
                jgs.append(1 + " ");
            }
            System.out.println("YES\n" + jgs);
        } else {
            System.out.println("NO");
        }


    }


    public static int skcasncakcnakcn(int n) {

        // base case
        if (n == 0)
            return 0;
        else
            return 1 + skcasncakcnakcn(n & (n - 1));
    }


}