import core.bitop; import std.algorithm; import std.array; import std.ascii; import std.container; import std.conv; import std.format; import std.math; import std.random; import std.range; import std.stdio; import std.string; import std.typecons; long g(long n, long r) { long v = 1; foreach (i; 0..n) { v *= i + 1; } foreach (i; 0..r) { v /= i + 1; } foreach (i; 0..(n - r)) { v /= i + 1; } return v; } long f(long n) { long cnt = 0; foreach (i; 1..n) { long v = g(n, i); if (v % 2 == 0) { ++cnt; } } return cnt; } void main() { long n = readln.chomp.to!long; if (n < 1000) { n.f.writeln; return; } long two = 2; long cnt = 0; while (two <= n) { cnt += n / two; two <<= 1L; } --cnt; cnt += n.popcnt; cnt.writeln; }