#include <iostream>
#include <vector>
using namespace std;
string divide(string origin, int x) {
int remainder=0;
int n=origin.size();
for(int i=0;i<n;++i){
int current=remainder*10+origin[i]-'0';
origin[i]=current/x+'0';
remainder=current%x;
}
int pos=0;
while(origin[pos]=='0')pos++;
return origin.substr(pos);
}
string multiply(string origin, int x) {
int carry = 0;
int n = origin.size();
for (int i = n - 1; i >= 0; --i) {
int current = carry + (origin[i] - '0')*x;
origin[i] = current % 10+'0';
carry = current / 10;
}
if (carry != 0) {
origin.insert(0, to_string(carry));
}
return origin;
}
string add(string origin, int x) {
int carry = 0;
int n = origin.size();
for (int i = n - 1; i >= 0; --i) {
int current = origin[i] - '0' + carry + (i == n - 1 ? x : 0);
origin[i] = current % 10+'0';
carry = current / 10;
}
if (carry != 0) {
origin.insert(0, to_string(carry));
}
return origin;
}
int main() {
string A;
while (cin >> A) { // 注意 while 处理多个 case
vector<int> binary;
while (A.size() != 0) {
int last = A[A.size() - 1] - '0';
binary.push_back(last % 2);
A = divide(A, 2);
}
int n = binary.size();
string B{'0'};
for (int i = 0; i<n; ++i) {
B = multiply(B, 2);
B = add(B, binary[i]);
}
cout << B << endl;
}
}
// 64 位输出请用 printf("%lld")