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 main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int n, k;
  cin >> n >> k;
  long long int r = n, i, count = 0, l = 0, g = 0, d = 0, w = 0;
  long long int a[32], p = 31;
  for (i = 0; i < 32; i++) a[i] = 0;
  queue<long long int> q;
  while (r != 0) {
    long long int rem = r % 2;
    a[p] = rem;
    if (rem == 1) count++;
    p--;
    r = r / 2;
  }
  for (i = 31; i >= 0; i--) {
    long long int e, t;
    t = 31 - i;
    e = pow(2, t);
    if (a[i] == 1) q.push(e);
  }
  if (count > k)
    cout << "NO"
         << "\n";
  else {
    if (count == k) {
      cout << "YES"
           << "\n";
      for (i = 31; i >= 0; i--) {
        long long int y = 31 - i, u;
        u = pow(2, y);
        if (a[i] == 1) cout << u << " ";
      }
    } else {
      while (l != k - count) {
        long long int s = q.front();
        w = q.size();
        if (s > 1) {
          g = s / 2;
          q.pop();
          q.push(g);
          q.push(g);
          l++;
          d = 0;
        } else {
          d++;
          q.pop();
          q.push(1);
        }
        if (d == w) break;
      }
      if (d == w && d != k)
        cout << "NO"
             << "\n";
      else {
        cout << "YES"
             << "\n";
        while (!q.empty()) {
          cout << q.front() << " ";
          q.pop();
        }
      }
    }
  }
  return 0;
}