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
40
41
#include <bits/stdc++.h>
using namespace std;
typedef long long lld;

int n, sum = 0, k, m, p;
int t[1000000];

int main() {
	scanf("%d", &n);
	
	for (m = 1; n > 0; ++m) {
		k = m;
		p = 0;
		while (k > 0) {
			p += (k & 1);
			k >>= 1;
		}
		t[m] = p;
		n -= p;
	}
	--m;
	if (n == 0) {
		printf("%d\n", m);
		for (int i = m; i > 0; --i) {
			printf("%d ", i);
		}
	} else {
		printf("%d\n", m - 1);
		for (int i = m; i > 0; --i) {
			if (t[i] + n == 0) {
				n = 0;
				continue;
			}
			printf("%d ", i);
		}
		
	}
	
	
	return 0;
}