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 s[1010];
int two[1010];
int rem, cnt;
void dectobin(int n) {
  int temp, t;
  temp = n;
  for (int i = 1;; i++) {
    if (temp == 0) {
      break;
    }
    t = temp % 2;
    two[i] = t;
    rem = i;
    temp = temp / 2;
  }
}
int main() {
  int a, b;
  s[0] = 1;
  s[1] = 2;
  scanf("%d%d", &a, &b);
  for (int i = 2;; i++) {
    if (s[i - 1] > 1000000000) {
      break;
    }
    cnt = i;
    s[i] = s[i - 1] * 2;
  }
  if (a < b) {
    printf("NO");
    return 0;
  }
  dectobin(a);
  int sum = 0;
  for (int i = 1; i <= rem; i++) {
    sum = sum + two[i];
  }
  int cha = b - sum;
  if (cha < 0) {
    printf("NO");
    return 0;
  }
  if (cha != 0) {
    for (int i = rem; i >= 2; i--) {
      if (two[i] >= cha) {
        two[i - 1] = two[i - 1] + cha * 2;
        two[i] = two[i] - cha;
        break;
      } else {
        two[i - 1] += two[i] * 2;
        cha = cha - two[i];
        two[i] = 0;
      }
    }
  }
  printf("YES\n");
  for (int i = 1; i <= rem; i++) {
    if (two[i] == 0) {
      continue;
    }
    for (int q = 1; q <= two[i]; q++) {
      printf("%d ", s[i - 1]);
    }
  }
}