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
42
43
44
45
46
47
48
49
50
51
def jedynki(liczba):
    j = 0
    while liczba > 0:
        if liczba % 2 == 1:
            j += 1
        liczba //= 2
    return j
# end def

wynik = []

def main():
    n = int(input())
    if n == 1:
        wynik.append(1)
        return 1
    if n == 2:
        wynik.append(1)
        wynik.append(2)
        return 2
    zliczacz = 0
    liczba = 0
    while zliczacz < n:
        liczba += 1
        zliczacz += jedynki(liczba)
        wynik.append(liczba)

        if zliczacz > n:
            indeks = len(wynik) - 1
            while True:
                doodjecia = jedynki(wynik[indeks])
                if zliczacz - doodjecia < n:
                    indeks -= 1
                else:
                    zliczacz -= doodjecia
                    wynik[indeks] = 0
                    break
    ile = 0
    for i in range(len(wynik)):
        if wynik[i] != 0:
            ile += 1
    return ile
# end def

print(main())
for k in range(len(wynik)-1, -1, -1):
    if wynik[k] != 0:
        if k != 0:
            print(wynik[k], end = " ")
        else:
            print(wynik[k], end = "\n")