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>).
from collections import defaultdict
import sys
input = sys.stdin.readline
# print = sys.stdout.write

dc = defaultdict(int)
n = int(input())
mx = 2**20 - 1
ls = []
for i in range(n,-1,-1) :
    ans = (mx^i)
    while (dc[ans] != 0 or ans > n) :
        mx += 1
        mx //= 2
        mx -= 1
        ans = (mx^i)
    ls.append(ans)
    dc[ans] += 1
    # print(len(ls))
ls.reverse()
print(n*(n+1))
print(*ls)