/*

    关键在于2的31次方应该用long来表示

*/

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<math.h>

using namespace std;

int convert10(vector<int>& data,int s,int e) {
    int base = pow(2,7);
    int ans = 0;
    for(int i=s;i<=e;i++) {
        if(data[i]) {
            ans+=base;
        }
        base/=2;
    }
    return ans;

}

// 十进制转成2进制
void convert2(string& data,vector<int>& res) {
    int num = stoi(data);
    // 开始转换
    // 十进制开始转换二进制
    int base = pow(2,7);
    int index = 0;
    while(num>0 && index<8) {
        if(num>=base) {
            res[index]=1;
            num-=base;
        }
        index++;
        base/=2;
    }
}

void ip2num(string& ip) {
   auto iter = find(ip.begin(), ip.end(), '.');
    vector<int> ip_1(8);
    string data1(ip.begin(),iter);
//     cout<<"data1: "<<data1<<endl;
    convert2(data1, ip_1);

   auto iter2 = find(++iter, ip.end(), '.');
    vector<int> ip_2(8);
    string data2(iter,iter2);
//     cout<<"data2: "<<data2<<endl;
    convert2(data2, ip_2);

    auto iter3 = find(++iter2, ip.end(), '.');
    vector<int> ip_3(8);
    string data3(iter2,iter3);
//     cout<<"data3: "<<data3<<endl;
    convert2(data3, ip_3);

    vector<int> ip_4(8);
    string data4(++iter3,ip.end());
//     cout<<"data4: "<<data4<<endl;
    convert2(data4, ip_4);

   long base = pow(2,31);
   long res =0;
    for(int i=0;i<8;i++) {
        if(ip_1[i]) {
            res+=base;
        }
        base/=2;
    }
    for(int i=0;i<8;i++) {
        if(ip_2[i]) {
            res+=base;
        }
        base/=2;
    }
    for(int i=0;i<8;i++) {
        if(ip_3[i]) {
            res+=base;
        }
        base/=2;
    }
    for(int i=0;i<8;i++) {
        if(ip_4[i]) {
            res+=base;
        }
        base/=2;
    }    
    cout<<res<<endl;
}


void num2ip(long num) {
    vector<int> vec(32,0);
    long base =pow(2,31);
    int index = 0;
    while(num>0 && index<=31) {
//         cout<<num<<" "<<base<<" "<<index<<endl;
        if(num>=base) {
            vec[index]=1;
            num-=base;
        }

        index++;
        base/=2;
    }

    index =0;
    int sum = 0;
    cout<<convert10(vec, 0, 7)<<".";
    cout<<convert10(vec, 8, 15)<<".";
    cout<<convert10(vec, 16, 23)<<".";
    cout<<convert10(vec, 24, 31)<<endl;
}


// int ip2num(string& ip) {

// }

int main() {
    string ip;
    long num;
    while(cin>>ip) {
        cin>>num;
//         cout<<"ip: "<<ip<<endl;
        ip2num(ip);
        num2ip(num);
    }
}