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
38
39
#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> res;
	int tmp = 0;
	int koniec = 1;

	for(;tmp <= n;koniec++) {
		tmp += __builtin_popcount(koniec);
	}
	koniec--;

	int nadmiar = tmp - n;
	bool bylo = false;

	for (int i = koniec; i > 0; i--) {
		int bity = __builtin_popcount(i);

		if (bity == nadmiar && !bylo) {
			bylo = true;
			continue;
		}

		res.push_back(i);
	}

	cout << res.size() << "\n";
	for (int i : res)
		cout << i << " ";
}