#include
#include
#include
using namespace std;
string add_big_integer(string A, string B) { // funkcija koja ke ni sobere A + B
if(A.size() < B.size()) {
swap(A, B);
}
int a_i = (int) A.size() - 1;
int b_i = (int) B.size() - 1;
int carry = 0;
string sum = "";
while(a_i >= 0 and b_i >= 0) {
int digit_a = (A[a_i] - '0');
int digit_b = (B[b_i] - '0');
int zbir = digit_a + digit_b + carry;
if(zbir <= 9) {
sum += (zbir + '0');
carry = 0;
}
else {
carry = 1;
zbir -= 10;
sum += (zbir + '0');
}
a_i--;
b_i--;
}
while(a_i >= 0) {
int digit_a = (A[a_i] - '0');
int zbir = digit_a + carry;
if(zbir <= 9) {
sum += (zbir + '0');
carry = 0;
}
else {
carry = 1;
zbir -= 10;
sum += (zbir + '0');
}
a_i--;
}
if(carry == 1) {
sum += "1";
}
reverse(sum.begin(), sum.end());
return sum;
}
string multiply_big_integer(string A, string B) {
int sz_a = (int) A.size();
int sz_b = (int) B.size();
vector v(sz_a + sz_b, 0);
for(int i = sz_a - 1; i >= 0; i--) {
for(int j = sz_b - 1; j >= 0; j--) {
v[i + j + 1] += (A[i] - '0') * (B[j] - '0');
}
}
for(int i = sz_a + sz_b - 1; i >= 0; i--) {
if(v[i] > 9) {
v[i - 1] += (v[i] / 10);
v[i] %= 10;
}
}
int i = 0;
while(v[i] == 0) {
i++;
}
string product = "";
for(int j = i; j < sz_a + sz_b; j++) {
product += (v[j] + '0');
}
return product;
}
string divide_by_2(string s, int &rem) {
string result = "";
int tmp = (s[0] - '0');
int i =0;
while(tmp < 2) {
tmp = (tmp * 10) + (s[++i] - '0');
}
while(s.size() > i) {
result += (tmp / 2) + '0';
tmp = (tmp % 2) * 10 + s[++i] - '0';
}
if(add_big_integer(result, result) != s) {
rem = 1;
}
if(result.size() == 0) {
return "0";
}
return result;
}
int main() {
string s;
cin >> s;
string decimal_number = "";
string power_of_8 = "1";
for(int i = (int) s.size() - 1; i >= 0; i--) {
string a = "";
a += s[i];
decimal_number = add_big_integer(decimal_number, multiply_big_integer(a, power_of_8));
power_of_8 = multiply_big_integer(power_of_8, "8");
}
cout << decimal_number << endl;
string binary_number = "0";
string power_of_10 = "1";
while(decimal_number != "0") {
int rem = 0;
string divided = divide_by_2(decimal_number, rem);
string remainder = "0";
if(rem == 1) {
remainder = "1";
}
binary_number = add_big_integer(binary_number, multiply_big_integer(remainder, power_of_10));
power_of_10 = multiply_big_integer(power_of_10, "10");
cout << divided << endl;
decimal_number = divided;
}
cout << binary_number << endl;
return 0;
}
// 101101101101101101101101101
// 101101101101101101101101101