program ideone;
var
SnipeK, Malfple, Muscles, Yopee: integer;
Moiz : array [1..1000000] of integer;
begin
readln(SnipeK);
Yopee := 0;
for Malfple := 1 to SnipeK do
Moiz[Malfple] := 0;
for Malfple := SnipeK downto 1 do
begin
if (Moiz[Malfple] = 0) then
begin
Yopee := Yopee + 1;
Muscles := Malfple div 2;
while (Muscles > 0) do
begin
Moiz[Muscles] := 1;
Muscles := Muscles div 2;
end;
end;
end;
writeln(Yopee);
end.
cHJvZ3JhbSBpZGVvbmU7CnZhcgpTbmlwZUssIE1hbGZwbGUsIE11c2NsZXMsIFlvcGVlOiBpbnRlZ2VyOwpNb2l6IDogYXJyYXkgWzEuLjEwMDAwMDBdIG9mIGludGVnZXI7CmJlZ2luCnJlYWRsbihTbmlwZUspOwpZb3BlZSA6PSAwOwpmb3IgTWFsZnBsZSA6PSAxIHRvIFNuaXBlSyBkbwpNb2l6W01hbGZwbGVdIDo9IDA7CmZvciBNYWxmcGxlIDo9IFNuaXBlSyBkb3dudG8gMSBkbwpiZWdpbgppZiAoTW9peltNYWxmcGxlXSA9IDApIHRoZW4KYmVnaW4KWW9wZWUgOj0gWW9wZWUgKyAxOwpNdXNjbGVzIDo9IE1hbGZwbGUgZGl2IDI7CndoaWxlIChNdXNjbGVzID4gMCkgZG8KYmVnaW4KTW9peltNdXNjbGVzXSA6PSAxOwpNdXNjbGVzIDo9IE11c2NsZXMgZGl2IDI7CmVuZDsKZW5kOwplbmQ7CndyaXRlbG4oWW9wZWUpOwplbmQu