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
32
33
34
35
36
37
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;

int odp[1'000'009];

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n,ile=0,kop;
    cin >> n;
    kop = n;
    for (int x=1;x<=kop;x++){
        if (n<=0){
            break;
        }
        odp[x] = 1;
        ile += 1;
        n -= __builtin_popcount(x);
    }
    n = -n;
    for (int x=kop;x>=1;x--){
        if (odp[x] == 1 && __builtin_popcount(x)<=n){
            n -= __builtin_popcount(x);
            odp[x] = 0;
            ile -= 1;
        }
    }
    cout << ile << '\n';
    for (int i=kop;i>=1;i--){
        if (odp[i]==1){
            cout << i << ' ';
        }
    }
    return 0;
}