#include <bits/stdc++.h>
long long arr[100005 * 2];
using namespace std;
int main() {
  long long i, j, k, l, m, n, o;
  long long testcase;
  long long input, flag, tag, ans;
  scanf("%lld", &n);
  scanf("%lld", &k);
  memset(arr, 0, sizeof arr);
  long long tot = 0;
  long long mx = -1;
  long long mn = 100005;
  for (i = 0; i <= 61; i++) {
    bool bit = n & (1LL << i);
    if (bit) {
      arr[i + 100005]++;
      tot++;
      mx = max(mx, i);
      mn = min(mn, i);
    }
  }
  if (tot > k) {
    cout << "No" << endl;
    return 0;
  }
  cout << "Yes" << endl;
  while (tot < k) {
    if (arr[mx + 100005] <= k - tot) {
      arr[mx - 1 + 100005] += arr[mx + 100005] * 2;
      tot += arr[100005 + mx];
      arr[100005 + mx] = 0;
      mx--;
      mn = min(mn, mx);
    } else {
      break;
    }
  }
  while (tot < k) {
    arr[mn + 100005] -= 1;
    arr[mn + 100005 - 1] += 2;
    --mn;
    tot++;
  }
  for (i = 100005 * 2 - 1; i >= 0; i--) {
    for (j = 1; j <= arr[i]; j++) {
      cout << i - 100005 << " ";
    }
  }
  cout << endl;
  return 0;
}
