但他不知道如何选择,才能让
//n的排列(即1,2,...n)能异或得到的最大值m就是n的位数的全一数
//我们只需得到n的二进制位数后构造该位数的全一数即可得到m
//例如 5 ,二进制就是101 , 二进制有3位 , 对应的全一数(111)的十进制就是7 (2的n的位数次方-1)
#include <iostream>
using namespace std;
typedef long long ll;
int main() {
ll a;
cin>>a;
ll tmp = a;
ll cnt=0;
while(tmp>0){
tmp>>=1;
cnt++;
}
cout << (1LL<<cnt)-1;
}