Untitled

 avatar
unknown
plain_text
3 years ago
839 B
4
Indexable
n = int(input())

m = n

tmp = 1
h = 0
while 2 * tmp - 1 <= m:
    tmp *= 2
    h += 1

m -= tmp - 1

a = [2 ** i for i in range(h)]

aboba = []

for i in range(h - 1):
    tmp = 2 ** (h - i - 1) - 1
    
    while a[i] > 0 and tmp <= m:
        aboba.append(i)
        m -= tmp
        a[i] -= 1
        
        tmp2 = 1
        for j in range(i + 1, h):
            a[j] += tmp2
            tmp2 *= 2

if m > 0:
    print(-1)
    exit(0)


h_cnt = [2 ** i for i in range(h)]
for i in aboba:
    tmp = 1
    for j in range(i + 1, h):
        h_cnt[j] += tmp
        tmp *= 2

ans = []

l = 0
r = 1
for i in range(1, h):
    adjust = h_cnt[i]
    
    extra = h_cnt[i] - 2 * (r - l)
    for j in range(l, r):
        ans += [j, j]
        if extra:
            extra -= 1
            ans += [j]
    
    l = r
    r += adjust

print(*ans)
Editor is loading...