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;
void solve(long long n, long long k) {
  printf("%lld %lld\n", n, k);
  if (n == 0 && k == 0) return;
  long long temp = ceil(((double)n) / k);
  long long i;
  for (i = 1; i < temp; i *= 2)
    ;
  printf("%lld ", i);
  solve(n - i, k - 1);
  return;
}
long long maxAllowed(long long n, long long k) {
  long long tn = 0;
  long long hp = 1;
  while (1) {
    if (n - hp < k - 1) {
      hp /= 2;
      break;
    }
    hp *= 2;
  }
  return hp;
}
void solve2(long long n, long long k) {
  while (n > 0 || k > 0) {
    long long temp = maxAllowed(n, k);
    printf("%lld ", temp);
    n = n - temp;
    k--;
  }
}
int main() {
  int n, k;
  scanf("%d%d", &n, &k);
  int sb = 0;
  int tn = n;
  while (tn > 0) {
    if (tn & 1 != 0) sb++;
    tn = tn >> 1;
  }
  if (k < sb || k > n) {
    printf("NO\n");
    return 0;
  } else
    printf("YES\n");
  solve2(n, k);
  printf("\n");
  return 0;
}