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

  
  public static void main(String[] args)
  {
    Scanner sc = new Scanner(System.in);
    int sum = sc.nextInt();
    int need = sc.nextInt();
    // change the first input to reversed binary
    int tmp = sum;
    int summans = 0;
    ArrayList<Integer> binary = new ArrayList<Integer>();
    while (tmp > 0)
    {
      if (tmp % 2 == 0)
        binary.add(0);
      else
      {
        binary.add(1);
        summans++;
      }
      tmp = tmp / 2;
    }
    // test if the sum can be represented
    ArrayList<Integer> powerOfTwo = new ArrayList<Integer>();
    for (int i = 0; i < binary.size(); i++)
    {
      if (binary.get(i) == 1)
      {
        powerOfTwo.add((int)Math.pow(2, i));
      }
      //System.out.print(binary.get(i) + " ");
    }
    //System.out.println(binary.size());
    /* traverse the binary arraylist */
    for (int i = binary.size() - 1; i > 0 && summans < need; i--)
    {
      while (summans < need && binary.get(i) > 0)
      {
        binary.set(i, binary.get(i) - 1);
        binary.set(i - 1, binary.get(i - 1) + 2);
        summans++;
      }
      if (binary.get(i) == 0)
      {
        binary.remove(i);
      }
    }
    // if you have to split so much that the last number is 0
    if (summans < need || powerOfTwo.size() > need)
      System.out.println("NO");
    else
    {
      System.out.println("YES");
      for (int i = 0; i < binary.size(); i++)
      {
        for (int j = 0; j < binary.get(i); j++)
        {
          System.out.print((int)(Math.pow(2, i)) + " ");
        }
      }
      System.out.println();
    }
  }
}