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
//Solution by Mikołaj Kołek

#include "bits/stdc++.h"
#define intin *istream_iterator<int>(cin)

using namespace std;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	
	vector<int> res;
	int n = intin, sum = 0;
	for(int i = 1; sum != n; i++) {
		sum += __builtin_popcount(i);
		
		if(sum >= n) {
			for(int j = i; j >= 0; j--) {
				if(sum - __builtin_popcount(j) >= n)
					sum -= __builtin_popcount(j);
				else
					res.push_back(j);
			}
		}
	}
	
	cout << res.size() << "\n";
	copy(res.begin(), res.end(), ostream_iterator<int>(cout, " "));
	
	return 0;
}