#include <iostream>
#include <string>
#include <vector>
#include <array>

using namespace std;

/*
思路:根据'.'截取每段数字存储于vecotr<string>,转化int类型,再 取模2与除商2转化二进制,再转成10进制(1*1  + 1*4+ 1*8 + ...),
最后转成string,

*/
long IpConverDecimal(string ipAddr)
{
    array<long, 4> arrNum{0};
    int point = 0;
    for(int i = 0; i < ipAddr.length(); i++) {
        if(ipAddr[i] != '.') {
            arrNum[point] = arrNum[point]*10 + ipAddr[i] - '0';
        } else {
            point++;
        }
    }
    long deciValue = arrNum[0] << 24 | arrNum[1] << 16 | arrNum[2] << 8 | arrNum[3]; //位运算
    return deciValue;
}

/*
思路:将字符串转成int, 取模2与除商2转化二进制,8位二进制转化十进制,得到对应一段数字,字段+‘.’+字段 后得到IP地址
*/
string DecimalConverIp(int deciValue)
{
    string ipAddr;
    ipAddr += to_string((deciValue >> 24) & 0xff); //第1个八位二进制转化字符
    ipAddr += '.';
    ipAddr += to_string((deciValue >> 16) & 0xff); //第2个八位二进制转化字符
    ipAddr += '.';
    ipAddr += to_string((deciValue >> 8) & 0xff); //第3个八位二进制转化字符
    ipAddr += '.';
    ipAddr += to_string(deciValue  & 0xff); //第4个八位二进制转化字符
    return ipAddr;
    
}

int main()
{
    string ipAddr;
    long decimalValue;
    while(cin>>ipAddr>>decimalValue) {
        cout<<IpConverDecimal(ipAddr)<<endl;
        cout<<DecimalConverIp(decimalValue)<<endl;
    }
}