/*
涉及到的知识点
1. 字符串处理
2. vector 数组的应用
3. 位运算 左移 右移   与运算  或运算
*/

#include <iostream>
#include <string>
#include <vector>
using namespace std;
size_t ipToStr(string str){
    vector<string> v;
    int pos = str.find_first_of('.');
    string tmp = str.substr(0, pos);
    v.push_back(tmp);

    str = str.substr(pos+1);
    pos = str.find_first_of('.');
    v.push_back(str.substr(0, pos));

    str = str.substr(pos+1);
    pos = str.find_first_of('.');
    v.push_back(str.substr(0, pos));

    str = str.substr(pos+1);
    pos = str.find_first_of('.');
    v.push_back(str.substr(0, pos));

    size_t ipInt;
    ipInt = stoi(v[0]);
    ipInt = ipInt << 8;
    ipInt = ipInt | stoi(v[1]);

    ipInt = ipInt << 8;
    ipInt = ipInt | stoi(v[2]);

    ipInt = ipInt << 8;
    ipInt = ipInt | stoi(v[3]);

    return ipInt;
;
}

string numToIP(size_t str){
    string ans;
    size_t ipNum = (str);
    size_t seg1, seg2, seg3, seg4;
    seg4 = ipNum & 0xff;

    ipNum = ipNum >> 8; 
    seg3 = ipNum & 0xff;

    ipNum = ipNum >> 8; 
    seg2 = ipNum & 0xff;

    ipNum = ipNum >> 8; 
    seg1 = ipNum & 0xff;

    ans += to_string(seg1);
    ans.append(1, '.');
    ans += to_string(seg2);
    ans.append(1, '.');

    ans += to_string(seg3);
    ans.append(1, '.');
    ans += to_string(seg4);

    return ans;
}


int main() {
    string ip;
    size_t num;
    cin >> ip;
    cin >> num;

    cout << ipToStr(ip) << endl;
    cout << numToIP(num) << endl;

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