/*

tipi:

int -- 32 bitno  (+- 2^31 ~= 2 * 10^9)
int64_t (long long) 64 bitno (+- 2^63 ~= 10^18)

unsiged int -- 32 bit, 0 -- 4*10^9

decimalna: float, *double*

operacije:
+, *, -, /    --- ^ NI POTENCA

(a/b)*b + (a%b) == a


 */

#include <iostream>
#include <algorithm>
#include <string>
#include <cassert>

using namespace std;

int MOD = 1000000007;

int sestej_stevke(int a, int b=10) {
    int v = 0;
    while (a > 0) {
        v += a % b;  // pristejem zadnjo stevko
        a /= b;  // "zbrisem" zadnjo stevko
    }
    return v;
}

string v_sistem(int a, int b=10) {
    assert(b >= 2);
    assert(b <= 16);
    string STEVKE = "0123456789abcdef";
    string s;
    while (a > 0) {
        s.push_back(STEVKE[a % b]);  // pristejem zadnjo stevko
        a /= b;  // "zbrisem" zadnjo stevko
    }
    reverse(s.begin(), s.end());
    return s;
}

int v_desetisko(string s, int b=10) {
    // 121012 v 3
    // 2 + 1*3 + 0*3*3 + 1*3*3*3 + 2*3*3*3*3 + 1*3*3*3*3*3
    // 2 + 3*(1 + 3*(0 + 3*(1 + 3*(2+ 3*1)))))
    int n = s.size();
    int r = 0;
    for (int i = 0; i < n; ++i) {
        // int c = ('a' <= s[i] && s[i] <= 'f') ? 10 + s[i] - 'a' : s[i] - '0';
        int c;
        if ('a' <= s[i] && s[i] <= 'f') {
            c = 10 + s[i] - 'a';
        } else if ('0' <= s[i] && s[i] <= '9') {
            c = s[i] - '0';
        } else {
            throw std::runtime_error("invalid character: "s + s[i]);
        }
        // int c = pogoj ? 1 : 0;
        // 'a' --- tip `char` -- koda znaka po ASCII tabeli
        r *= b;
        r += c;
    }  // 2 + n*4 operacij == ~n == O(n)

    /*  dve različni implementaciji istega algorimhma z razlicno časovno zahtevnostjo    */
    int r2 = 0;
    for (int i = 0; i < n; ++i) {
        int c = 'a' <= s[i] && s[i] <= 'f' ? 10 + s[i] - 'a' : s[i] - '0';
        for (int j = 0; j < n-1-i; ++j) {
            c *= b;
        }
        r2 += c;
    }
    // 2 + 3*n + (1 + 2 + 3 + ... + n-1) == ~n^2/2 + ... = O(n^2)

    return r;
}

int main() {
    // cout << "Hello world" << endl;

    // int64_t a = 6;
    // for (int i = 0; i < 1000000; ++i) {
    //     a += 10000;
    //     a %= MOD;
    // }
    // cout << a << endl;

/*    cout << 3/4 << endl;
    cout << (-1)/2 << endl;

    cout << 3 % 4 << endl;
    cout << (-1) % 2 << endl;
 */

    int a;
    cin >> a;
    cout << sestej_stevke(a) << endl;
    cout << sestej_stevke(a, 2) << endl;

    string s1 = v_sistem(a, 10);
    string s2 = v_sistem(a, 2);
    string s3 = v_sistem(a, 16);

    cout << v_desetisko(s1, 10) << endl;
    cout << v_desetisko(s2, 2) << endl;
    cout << v_desetisko(s3, 16) << endl;

    // cout << v_sistem(a, 1) << endl;
    // cout << v_sistem(a, 0) << endl;

    return 0;
}