#include <iostream>
#include <vector>
#include <sstream>
#include <algorithm>
#include <cmath>

#include <iomanip>
using namespace std;
void Stringsplit(string str,  char split,vector<string>& res)
{
   istringstream iss(str);// 输入流
    string token;// 接收缓冲区
    while (getline(iss, token, split))// 以split为分隔符
    {
        res.push_back(token);
    }
}

int main() {
    string ip_str;
   cin>>ip_str;
   vector<string> str;
   Stringsplit(ip_str,'.',str);
  string  ip;
    for(int i=0;i<4;i++){
       int t1= atoi(str[i].c_str());
       string s1;
       while(t1>0){
            if(t1%2==1){
            s1+="1";
            }else s1+="0";
            t1/=2;
       } 
       // cout<< s1.length()<<" :"<<endl;
       int  len=s1.length();
       if(len<8){
        for(int i=0;i<8-len;i++){
            s1+="0";
        }
       }
       reverse(s1.begin(),s1.end());
        ip+=s1;
       
   }
  double num=0;
  
  for(int i=31;i>=0;i--){
    if(ip[i]=='1'){
        num+=pow(2,31-i);
    }
  }
    cout<<fixed<<setprecision(0)<< num<<endl;
    string res;
    long long int ip_int;
    cin>>ip_int;
    //cout<<ip_int;
    string st;
    double m=1.0;
   while(ip_int>0){
        if(ip_int%2==1){
            st+='1';
        }else st+='0';
        ip_int/=2.0;
   }
   int len2=st.length();
   if(len2<32){
    for(int i=0;i<32-len2;i++)
        st+='0';
   }
   reverse(st.begin(),st.end());
   vector<int> vec;
   for(int i=0;i<4;i++){
        int temp=0;
        string str1=st.substr(8*i,8);
        
       for(int j=7;j>=0;j--){
           if(str1[j]=='1')
            temp+=pow(2,7-j);
       }
        
       vec.push_back(temp);
   }
   for(int i=0;i<4;i++){
    
  
    if(i==3)
    cout<<vec[i];
    else  
    cout<<vec[i]<<'.';
   }
    


}
// 64 位输出请用 printf("%lld")