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 CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
int tabqu[10000000 + 1];
int fr, en;
int Error = 0;
void InitQueue(void) { fr = en = 0; }
void Enqueue(int el) {
  tabqu[en++] = el;
  if (en > 10000000) en = 0;
  if (en == fr) Error = 1;
}
void Dequeue(int *el) {
  if (fr != en) {
    *el = tabqu[fr++];
    if (fr > 10000000) fr = 0;
  } else
    Error = 1;
}
char QueueEmpty(void) { return fr == en; }
int main() {
  int n;
  cin >> n;
  int k;
  cin >> k;
  int pow2 = 1;
  int ilepot = 0;
  int npom = n;
  while (npom >= pow2) {
    if ((npom - pow2) % (2 * pow2) == 0) {
      npom = npom - pow2;
      Enqueue(pow2);
      pow2 = pow2 * 2;
      ilepot++;
    } else
      pow2 = pow2 * 2;
  }
  if (ilepot <= k && k <= n) {
    cout << "YES" << endl;
    int i = 0;
    while (i < k - ilepot) {
      int z;
      Dequeue(&z);
      if (z == 1) {
        Enqueue(z);
      } else {
        Enqueue(z / 2);
        Enqueue(z / 2);
        i++;
      }
    };
    while (fr != en) {
      int p;
      Dequeue(&p);
      cout << p << " ";
    }
  } else {
    cout << "NO";
  }
  return 0;
}