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 sys
input = sys.stdin.readline
from collections import defaultdict, deque
from itertools import permutations
p = print
r = range
def I(): return int(input())
def II(): return list(map(int, input().split()))
def S(): return input()[:-1]
def M(n): return [list(map(int, input().split())) for ___ in r(n)]
def pb(b): print('YES' if b else 'NO')
def INF(): return float('inf')
# -----------------------------------------------------------------------------------------------------
#
# 　　　　　　　　　　　 ∧＿∧
# 　　　　　 ∧＿∧ 　 （´<_｀ ）　     Welcome to My Coding Space !
# 　　　　 （ ´_ゝ`）　/　 ⌒i        Free Hong Kong !
# 　　　　／　　　＼　 　  |　|       Free Tibet !
# 　　　 /　　 /￣￣￣￣/　|　 |
# 　 ＿_(__ﾆつ/　    ＿/ .| .|＿＿＿＿
# 　 　　　＼/＿＿＿＿/　（u　⊃
#
#     再帰関数ですか？　SYS!!!!
#     BINARY SEARCH ?
# -----------------------------------------------------------------------------------------------------
n = I()
res = [-1] * (n+1)
valid = [True] * (n+1)
t = 0
nn = n
while nn:
    t += 1
    nn//=2
standard = (2**t)-1
i = n
sol = 0
while i>=0:
    if standard - i <= n and valid[standard - i]:
        res[i] = standard - i
        valid[standard - i] = False
        sol += standard
        i -= 1
    else:
        standard//=2
p(sol)
p(*res)
