Little penguin Polo likes permutations. But most of all he likes permutations of integers from 0 to *n*, inclusive.

For permutation *p* = *p*<sub class="lower-index">0</sub>, *p*<sub class="lower-index">1</sub>, ..., *p*<sub class="lower-index">*n*</sub>, Polo has defined its beauty — number <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/0c51fe5d835015fdb8b8dbb056e9a83c439c83dc.png" style="max-width: 100.0%;max-height: 100.0%;"/>.

Expression <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/b364f2e04c665b78b924ec10666327a4ef4635bc.png" style="max-width: 100.0%;max-height: 100.0%;"/> means applying the operation of bitwise excluding "OR" to numbers *x* and *y*. This operation exists in all modern programming languages, for example, in language C++ and Java it is represented as "^" and in Pascal — as "xor".

Help him find among all permutations of integers from 0 to *n* the permutation with the maximum beauty.
The single line contains a positive integer *n* (1 ≤ *n* ≤ 10<sup class="upper-index">6</sup>).
import math

# If 'P' is a permutation of {0, ..., n}, 
# where P = P[0], P[1], ..., P[n] then, 
# '~P' is also a permutation of {0,n} ? 
# ONLY IF n = (1<<k) - 1 , for some k>=0 ; (~P is the 'k' bit-wise complement)
# i.e. 'P' is a permutation of all 'k' bit numbers ;


n = int(input())
BITS = int(math.log2(n)) + 1

res = 0
out = []

flag = [True for i in range(n+1)]
i = n
while(BITS>=0):
    while(i>=0 and ((~i) & ((1<<BITS) - 1))<=n and flag[((~i) & ((1<<BITS) - 1))]):
        flag[(~i) & ((1<<BITS) - 1)] = False
        
        out.append((~i) & ((1<<BITS) - 1))
        res += (out[-1] ^ i)

        # print((~i) & ((1<<BITS) - 1),end=' ')
        i -= 1

    if(i<0):
        break
    elif(i==0):
        out.append(i)
        BITS = -1
        break
    elif(((~i) & ((1<<BITS) - 1)) > n):
        BITS -= 1
    else:
        BITS = int(math.log2(i)) + 1

print(res)
for i in range(n+1):
    print(out[n-i],end=' ')
print()
