1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<bits/stdc++.h>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int n;
    cin >> n;

    vector <int> take;

    int csum = 0;
    unsigned int maxi;
    for (maxi = 1; csum < n; maxi++) {
        csum += __builtin_popcount(maxi);
    }
    maxi--;
    
    for (; maxi > 0; maxi--){
        if (csum - __builtin_popcount(maxi) >= n) csum -= __builtin_popcount(maxi);
        else take.push_back(maxi);
    }
    
    cout << take.size() << "\n";
    for (int i : take)
        cout << i << " ";
    cout << "\n";

    return 0;
}