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

For permutation p = p0, p1, ..., pn, Polo has defined its beauty — number <image>.

Expression <image> 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.

Input

The single line contains a positive integer n (1 ≤ n ≤ 106).

Output

In the first line print integer m the maximum possible beauty. In the second line print any permutation of integers from 0 to n with the beauty equal to m.

If there are several suitable permutations, you are allowed to print any of them.

Examples

Input

4


Output

20
0 2 1 4 3
import java.util.Arrays;
import java.util.Scanner;

public class XOROperation {
		public static void main(String[] args) {
			Scanner in = new Scanner(System.in);
	        int n = in.nextInt();
	        in.close();

	        int[] a = new int[n + 1];
	        Arrays.fill(a, -1);

	        while (n > 0) {
	            int d = 1;
	            while (d << 1 <= n) {
	                d <<= 1;
	            }

	            for (int i = d; i <= n; i++) {
	                int opp = d - 1 - (i - d);

	                a[i] = d - 1 - (i - d);
	                a[opp] = i;
	            }

	            n = d - 1 - (n - d + 1);
	        }

	        if (a[0] == -1) {
	            a[0] = 0;
	        }

	        long sum = 0;

	        StringBuilder ans = new StringBuilder();

	        for (int i = 0; i < a.length; i++) {
	            sum += i ^ a[i];
	            ans.append(a[i] + " ");
	        }
	        
	        System.out.println(sum);
	        System.out.println(ans.toString());
	    }
}