import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
    
public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 获取输入ip字符串和十进制数字
        String ip = br.readLine();
        long num = Long.parseLong(br.readLine());
        
        // 将ip字符串地址转换为十进制数字
        System.out.println(ipToDecimalNumber(ip));
        // 将十进制数字转换为ip地址
        System.out.println(decimalNumberToIp(num));
    }
    
    // 将ip地址转换为十进制数字的函数
    public static long ipToDecimalNumber(String ip) {
        // 分割ip地址为字符串数组
        String[] parts = ip.split("\\.");
        // 将每一个元素转为二进制字符串后拼接
        StringBuffer buffer = new StringBuffer();
        for (int i = 0; i < parts.length; i++) {
            int num = Integer.parseInt(parts[i]); // 获取当前ip段数字
            String binaryIp = Integer.toBinaryString(num); // 将其转换为二进制字符串
            while (binaryIp.length() < 8) { // 将字符串从前面补足至8位
                binaryIp = "0" + binaryIp;
            }
            buffer.append(binaryIp); // 拼接
        } // 遍历结束
        
        // 将2进制字符串转换为十进制后返回
        return Long.parseLong(buffer.toString(), 2);
    }
    
    // 将十进制数字转换为ip地址的函数
    public static String decimalNumberToIp(long num) {
        // 将数字转换为二进制字符串
        String binaryIp = Long.toBinaryString(num);
        // 将字符串从前面补足至32位
        while (binaryIp.length() < 32) {
            binaryIp = "0" + binaryIp;
        }
        // 将字符串每8位切割后转换为数字,再进行拼接
        String[] ans = new String[4];
        int index = 0;
        for (int i = 8; i <= binaryIp.length(); i += 8) {
            String partBinaryIp = binaryIp.substring(i - 8, i); // 每8位截取子串
            int partNum = Integer.parseInt(partBinaryIp,2); // 将二进制子串转换为十进制数字
            // 将十进制数字转换为字符串后存入数组
            ans[index++] = Integer.toString(partNum);
        }
        // 拼接数组中的结果后输出
        return String.join(".",ans);
    }  
}