#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]);
    }
  }
}
