#include <bits/stdc++.h>
using namespace std;
int po[110070];
int solve(int j, int k, int &sum) {
  while (sum < k) {
    for (int i = j - 1;; i--) {
      if (sum + po[i] > k) {
        return i;
      }
      sum += po[i];
      po[i - 1] += (po[i] * 2);
      po[i] = 0;
    }
  }
  return j - 1;
}
void find(int x, int k, int sum) {
  k -= (sum - 1);
  while (sum) {
    sum -= po[x];
    x--;
  }
  po[x + 1] -= 1;
  k -= 2;
  while (k) {
    po[x] = 1;
    x--;
    k--;
  }
  po[x] = 2;
}
void print(int x, int k) {
  cout << "Yes" << endl;
  for (int i = x; k; i--) {
    while (k && po[i]) {
      cout << i - 110000;
      --k;
      po[i]--;
      if (k) {
        cout << " ";
      } else {
        cout << endl;
      }
    }
  }
}
int main() {
  long long n;
  int k;
  cin >> n >> k;
  int j = 110000;
  int sum = 0;
  while (n) {
    if ((n % 2) == 1) {
      po[j] = 1;
      sum++;
    }
    j++;
    n /= 2;
  }
  if (sum > k) {
    cout << "No" << endl;
    return 0;
  }
  int x = solve(j, k, sum);
  if (sum != k) {
    find(x, k, sum);
  }
  print(x, k);
  return 0;
}
