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


def solve():
    n, = map(int, input().split())
    top = 1
    while top <= n:
        top *= 2
    top -= 1

    ans = [0] * (n + 1)
    i = n
    cur = n
    while i > 0:
        if top - i > cur:
            cur = i
            top = 1
            while top <= cur:
                top *= 2
            top -= 1
        ans[i] = top - i
        ans[top - i] = i
        i -= 1
    score = 0
    if n % 2 == 1:
        ans[top] = 0
        ans[0] = top
    for i in range(n + 1):
        score += ans[i] ^ i

    print(score)
    print(*ans)


if __name__ == "__main__":
    t = 1
    # t = int(input())
    for _ in range(t):
        solve()
