#include <iostream>
#include <array>
#include <cmath>
#include <algorithm>
#include <stdlib.h>
#include <cstdlib>
#include <string>
#include <vector>
#include <iterator>
#define ne "\n"
#define ll long long
#define cinn copy(istream_iterator<int>(cin), istream_iterator <int>(), back_inserter(v))
#define coutt copy(v.begin(), v.end(), ostream_iterator<int>(cout, " "))
#define ret return
int freq[1000];
int freq2[1000];
using namespace std;
int main()
{
//536870882
//cout << 536870882.0000 / 268435455.0000 <<" ";
ll p; cin >> p;
int ans=0;
while (p > 0)
{
if (p%2!=0)
{
ans += 1;
}
p /= 2;
}
cout << ans<<ne;
ret 0;
ll x;
ll y=1;
cin >> x;
ll count = 1;
ll maxx = 0;
if (x==1)
{
cout << count<<ne; ret 0;
}
while (x > y)
{
if (y <= x)
{
maxx = y;
cout << y << ne;
}
y *= 2;
}
if (maxx==x)
{
cout << count<<ne; ret 0;
}
else
{
count += (x - maxx);
cout <<"count="<< count << ne;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGl0ZXJhdG9yPgogCiNkZWZpbmUgbmUgIlxuIgojZGVmaW5lIGxsICBsb25nIGxvbmcKI2RlZmluZSBjaW5uIGNvcHkoaXN0cmVhbV9pdGVyYXRvcjxpbnQ+KGNpbiksIGlzdHJlYW1faXRlcmF0b3IgPGludD4oKSwgYmFja19pbnNlcnRlcih2KSkKI2RlZmluZSBjb3V0dCBjb3B5KHYuYmVnaW4oKSwgdi5lbmQoKSwgb3N0cmVhbV9pdGVyYXRvcjxpbnQ+KGNvdXQsICIgIikpCiNkZWZpbmUgcmV0IHJldHVybgogCmludCBmcmVxWzEwMDBdOwppbnQgZnJlcTJbMTAwMF07CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogCmludCBtYWluKCkKewoJLy81MzY4NzA4ODIKCS8vY291dCA8PCA1MzY4NzA4ODIuMDAwMCAvIDI2ODQzNTQ1NS4wMDAwIDw8IiAiOwoJCglsbCBwOyBjaW4gPj4gcDsKCWludCBhbnM9MDsKCXdoaWxlIChwID4gMCkKCXsKCQlpZiAocCUyIT0wKQoJCXsKCQkJYW5zICs9IDE7CgkJfQoJCXAgLz0gMjsKCX0KCWNvdXQgPDwgYW5zPDxuZTsKCQoJcmV0IDA7CglsbCB4OwoJbGwgeT0xOwoJY2luID4+IHg7CglsbCBjb3VudCA9IDE7CglsbCBtYXh4ID0gMDsKCWlmICh4PT0xKQoJewoJCWNvdXQgPDwgY291bnQ8PG5lOyByZXQgMDsKCX0KCXdoaWxlICh4ID4geSkKCXsKCQlpZiAoeSA8PSB4KQoJCXsKCQkJbWF4eCA9IHk7CgkJCWNvdXQgPDwgeSA8PCBuZTsKCQl9CgkJCgkJeSAqPSAyOwogCgl9CgkJaWYgKG1heHg9PXgpCgkJewoJCQljb3V0IDw8IGNvdW50PDxuZTsgcmV0IDA7CgkJfQoJCWVsc2UKCQl7CgkJCWNvdW50ICs9ICh4IC0gbWF4eCk7CgkJCWNvdXQgPDwiY291bnQ9Ijw8IGNvdW50IDw8IG5lOwoJCX0KCQoJCn0=