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;
using ll = long long;
using ld = long double;
const ll INF = 1e9 + 7;
const int N = 1e5;
int main() {
  ll n, k;
  cin >> n >> k;
  vector<ll> res;
  ll st = 1;
  ll n1 = n;
  while (n1) {
    if (n1 & 1) res.push_back(st);
    st *= (ll)2;
    n1 /= 2;
  }
  if (res.size() > static_cast<size_t>(k) || k > n) {
    printf("NO\n");
    return 0;
  }
  printf("YES\n");
  int ost = k - static_cast<int>(res.size());
  if (res[0] == 1) {
    res.erase(res.begin());
    printf("1 ");
  }
  for (size_t i = 0; i < res.size(); i++) {
    if (ost) {
      ost++;
      deque<ll> tmp;
      tmp.push_back(res[i]);
      while (!tmp.empty()) {
        ll x = tmp.back();
        tmp.pop_back();
        if (x == 1) {
          printf("1 ");
          ost--;
        } else {
          tmp.push_back(x / 2);
          tmp.push_back(x / 2);
          if (tmp.size() == static_cast<size_t>(ost)) {
            for (auto& it : tmp) printf("%lld ", it);
            ost = 0;
            break;
          }
        }
      }
    } else
      printf("%lld ", res[i]);
  }
  return 0;
}