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
import collections
n = int(input())
lista2 = []
suma = 0
i2 = 1
while True:
    lista2.append(i2)
    suma += collections.Counter(bin(i2)[2:])['1']
    if suma == n:
        lista2 = list(reversed(lista2))
        break
    if suma > n:
        lista2 = list(reversed(lista2))
        przekroczono = suma - n
        for i in range(len(lista2)):
            if collections.Counter(bin(lista2[i])[2:])['1'] == przekroczono:
                del(lista2[i])
                break
        break
    i2+=1
print(len(lista2))
for i in range(len(lista2)):
    if i != len(lista2)-1:
        print(lista2[i], end=' ')
    else:
        print(lista2[i])