#include <iostream>#include <bitset>#include <string.h>using namespace std;unsigned long f(string s){ unsigned long ip = 0, t = 0; for(int i = 0; i != s.size(); ++i) { if(s[i] == '.') { ip <<= 8; ip += t; t = 0; } else { t *= 10; t += s[i] - '0'; } } ip <<= 8; ip += t; return ip; }int main(void){ int N; while(cin >> N) { unsigned long temp = 0; string s; int low = -1; cin >> s; bitset<32> ip(f(s)); for(int i = 1; i != N; ++i) { cin >> s; bitset<32> tp(f(s)); for(int j = 31; j > low; --j) { if(tp[j] != ip[j]) { low = j; break; } } } for(int i = 0; i <= low; ++i) ip.reset(i); unsigned long num = ip.to_ulong(); for(int i = 3; i >= 0; --i) { cout << ((num >> 8*i) & 255ul); if(i) cout << '.'; } cout << endl; for(int i = low+1; i < 32; ++i) ip.set(i); num = ip.to_ulong(); for(int i = 3; i >= 0; --i) { cout << ((num >> 8*i) & 255ul); if(i) cout << '.'; } cout << endl; }}