func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAXN = 5e6 + 10;   const int MAX = 1e5 + 10;   const double eps = 1e-6;   priority_queue<int> q, Q;   long long s[MAX];   int main() {     long long n, k;     cin >> n >> k;     int cnt = 0;     while (n > 0) {       long long b = 1;       int a = 0;       while (b * 2 <= n) b *= 2, a++;       cnt++;       q.push(a);       Q.push(a);       n -= b;     }     if (cnt > k) {       cout <<  No  << endl;       return 0;     }     int temp = cnt;     while (temp < k) {       int a = Q.top();       Q.pop();       a--;       Q.push(a);       Q.push(a);       temp++;     }     temp = Q.top();     while (cnt < k) {       int a = q.top();       if (temp == a) break;       q.pop();       a--;       q.push(a);       q.push(a);       cnt++;     }     temp = 0;     while (q.size()) {       s[temp++] = q.top();       q.pop();     }     while (cnt < k) {       s[cnt - 1] = s[cnt - 1] - 1;       s[cnt] = s[cnt - 1];       cnt++;     }     cout <<  Yes  << endl;     for (int i = 0; i < cnt; i++) {       if (i == 0)         cout << s[i];       else         cout <<     << s[i];     }     cout << endl;     return 0;   }   