#include <bits/stdc++.h>   using namespace std;   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     ;     long long n, k;     cin >> n >> k;     priority_queue<long long, vector<long long>, greater<long long>> priq;     long long cur = 0, co = 0;     map<long long, long long> ma;     while (n > 0) {       if (n % 2) {         ma[cur]++;         co++;       }       n /= 2;       cur++;     }     if (co > k) {       cout <<  No  << endl;       return 0;     }     for (long long i = 63; i >= -63; i--) {       long long temp = ma[i] + co;       if (temp <= k) {         co += ma[i];         ma[i - 1] += (2 * ma[i]);         ma[i] = 0;       } else {         break;       }     }     for (long long i = 63; i >= -63; i--)       for (long long j = 0; j < ma[i]; j++) {         priq.push(i);       }     while (priq.size() < k) {       long long x = priq.top();       priq.pop();       priq.push(x - 1);       priq.push(x - 1);     }     vector<long long> ans;     cout <<  Yes  << endl;     while (!priq.empty()) {       long long x = priq.top();       ans.push_back(x);       priq.pop();     }     sort(ans.begin(), ans.end(), greater<long long>());     for (long long i = 0; i < ans.size(); i++) cout << ans[i] <<    ;     return 0;   }   