import std; void main () { long N = readln.chomp.to!long; // 明らかに、(条件を満たす) => A, B <= N // 故に、立っているbitをどっちに割り振るかだけ考えて良い。 import core.bitop : popcnt; int bit = popcnt(N); writeln(2L.pow(bit) - 2); } void read (T...) (string S, ref T args) { import std.conv : to; import std.array : split; auto buf = S.split; foreach (i, ref arg; args) { arg = buf[i].to!(typeof(arg)); } }