XOR
题号:NC206185
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

多多在老师的帮助下学会了异或运算,老师问了他这样一个问题:假设存在一个正整数数列1,2,3,···,N - 1,N,你能从中选出两个数(两个数可以相同),使它们异或后的值最大吗?异或后的最大值是多少?多多被难住了,请你帮助他。

输入描述:

输入一个正整数N (1 ≤ N ≤ 1018)

输出描述:

输出一个数,为1 ~ N中两个数异或后的最大值
示例1

输入

复制
10

输出

复制
15
示例2

输入

复制
1024

输出

复制
2047
示例3

输入

复制
2047

输出

复制
2047