#include<iostream>
#include<string>
#include<sstream>
using namespace std;
string getTwo(long long data);
string getOX(string data);
string T_X(string data);
int main(int argc,char** argv){
long long data;
cin >> data;
cout << getOX(getTwo(data));
return 0;
}
string getTwo(long long data){
string temp = "";
while(data){
int value = data - 2 * (data / 2);
data = data / 2;
string value_temp = "";
stringstream ss;
ss << value;
ss >> value_temp;
ss.clear();
temp = value_temp + temp;
}
return temp;
}
string getOX(string data){
string resault = "";
int length = data.length();
int flag = 0;
if(length % 4 == 0){
}else if(length % 4 == 1){
data = "000" + data;
}else if(length % 4 == 2){
data = "00" + data;
}else if(length % 4 == 3){
data = "0" + data;
}
length = data.length();
if(length == 0){
return "0";
}
for(int i = 0;i < length;i = i + 4){
string temp = "";
temp = temp + data[i] + data[i + 1] + data[i + 2] + data[i + 3];
if(T_X(temp) != "0"){
flag = 1;
}
if(flag){
resault = resault + T_X(temp);
}
}
return resault;
}
string T_X(string data){
if(data == "0000"){
return "0";
}else if(data == "0001"){
return "1";
}else if(data == "0010"){
return "2";
}else if(data == "0011"){
return "3";
}else if(data == "0100"){
return "4";
}else if(data == "0101"){
return "5";
}else if(data == "0110"){
return "6";
}else if(data == "0111"){
return "7";
}else if(data == "1000"){
return "8";
}else if(data == "1001"){
return "9";
}else if(data == "1010"){
return "A";
}else if(data == "1011"){
return "B";
}else if(data == "1100"){
return "C";
}else if(data == "1101"){
return "D";
}else if(data == "1110"){
return "E";
}else if(data == "1111"){
return "F";
}else{
return "X";
}
}