您的位置:首页 > 其它

CodeForces 288C

2016-07-21 19:57 134 查看
Description

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 .

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

Sample Input

Input

4

Output

20

0 2 1 4 3

#include<iostream>
#include<cstring>
#include<cstdio>
typedef __int64 ll;
using namespace std;
ll result[1000010];
ll n;
int main()
{
while(scanf("%I64d",&n)!=EOF)
{
ll k=1;
while(k<=n)
k*=2;
k--;
memset(result,-1,sizeof(result));
for(int i=n; i>=0; i--)
{
if(result[i]!=-1)
continue;
else
{
while((k^i)>n||result[k^i]!=-1)
k/=2;
result[k^i]=i;
result[i]=k^i;
}
}
ll sum=0;
for(int j=0; j<=n; j++)
sum+=j^result[j];
printf("%I64d\n",sum);
for(int q=0; q<n; q++)
printf("%I64d ",result[q]);
printf("%I64d\n",result
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: