143165576
 1919020031
 1204252996
 210637432
 724264821
 1741
 619489590
 1199537418
 1075765759
 747976826
 638486017
 58438190
 1285316221
 186925426
 1180540990
 833393692
 1818960378
 2000000000
 0
 1309028227
 514714359
 624205168
 1795248373
 643201595
 1304312649

14 3 3 4 5 2 4 4 2 4 6 4 3 4 5 3 5 4 1 5 3 4 5 5 8
#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const long long INFF = 0x3f3f3f3f3f3f3f3fll;
const long long M = 1e9 + 7;
const long long maxn = 3e6 + 7;
const double eps = 0.00000001;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
template <typename T>
inline T abs(T a) {
  return a > 0 ? a : -a;
}
int ans;
long long n, m, k;
int main() {
  scanf("%I64d", &n);
  while (n) {
    k = n % 16;
    printf("%d ", n % 16);
    if (k == 0) ans++;
    if (k == 4) ans++;
    if (k == 6) ans++;
    if (k == 8) ans += 2;
    if (k == 10) ans++;
    if (k == 11) ans += 2;
    if (k == 13) ans++;
    n /= 16;
  }
  printf("%d", ans);
}
