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:
/*
If you want to aim high, aim high
Don't let that studying and grades consume you
Just live life young
******************************
What do you think? What do you think?
1st on Billboard, what do you think of it
Next is a Grammy, what do you think of it
However you think, I’m sorry, but shit, I have no fcking interest
*******************************
I'm standing on top of my Monopoly board
That means I'm on top of my game and it don't stop
til my hip don't hop anymore
https://www.a2oj.com/Ladder16.html
*******************************
300iq as writer = Sad!
*/
import java.util.*;
import java.io.*;
import java.math.*;

   public class C
   {
      public static void main(String hi[]) throws Exception
      {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st = new StringTokenizer(infile.readLine());
         int N = Integer.parseInt(st.nextToken());
         int K = Integer.parseInt(st.nextToken());
         if(Integer.bitCount(N) > K || N < K)
            System.out.println("NO");
         else
         {
             System.out.println("YES");
             int[] cnt = new int[30];
             for(int b=29; b >= 0; b--)
                if((N&(1<<b)) > 0)
                    cnt[b]++;
            while(sum(cnt) < K)
            {
                for(int b=29; b > 0; b--)
                    if(cnt[b] > 0)
                    {
                        cnt[b]--;
                        cnt[b-1]+=2;
                        break;
                    }
            }
            for(int b=0; b < 30; b++)
                while(cnt[b]-->0)
                {
                    System.out.print((1<<b)+" ");
                }
         }
      }
      public static int sum(int[] arr)
      {
          int sum = 0;
          for(int x: arr)
            sum += x;
        return sum;
      }
}