


#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
const int MAX=1e6+3;
using namespace std;
string s[1005];
int n,t[4],pt[4],f=1;
void otc(int &a,int &b,int &c,int &d){
d--;
if(d==-1){
d=255;
c--;
}if(c==-1){
c=255;
b--;
}if(b==-1){
b=255;
a--;
} a=max(a,0);
return;
}void otc_2(int &a,int &b,int &c,int &d){
d++;
if(d==256){
d=0;
c++;
}if(c==256){
c=0;
b++;
}if(b==256){
b=0;
a++;
} a=min(a,255);
return;
}
void sub(string str){
int d1=str.find(".",0),d2=str.find(".",d1+1),d3=str.find(".",d2+1),d4=str.find(".",d3+1);
string s1=str.substr(0,d1),s2=str.substr(d1+1,d2-d1-1),s3=str.substr(d2+1,d3-d2-1),s4=str.substr(d3+1,d4-d3-1);
t[1]=stoi(s1);t[2]=stoi(s2);t[3]=stoi(s3);t[4]=stoi(d4);
return;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>s[i];
}sort(s+1,s+n+1);
for(int i=1;i<=n;i++){
sub(s[i]);
if(f==1){
cout<<"ban 0.0.0.0-";
otc(t[1],t[2],t[3],t[4]);
cout<<t[1]<<"."<<t[2]<<"."<<t[3]<<"."<<t[4]<<endl;
}else{
otc(t[1],t[2],t[3],t[4]);otc(t[1],t[2],t[3],t[4]);
if(t[1]==pt[1]&&t[2]==pt[2]&&t[3]==pt[3]&&t[4]==pt[4]){
otc_2(t[1],t[2],t[3],t[4]);
cout<<t[1]<<"."<<t[2]<<"."<<t[3]<<"."<<t[4]<<endl;
}else{
otc_2(t[1],t[2],t[3],t[4]);
cout<<pt[1]<<"-"<<t[1]<<"."<<pt[2]<<"-"<<t[2]<<"."<<pt[3]<<"-"<<t[3]<<"."<<pt[4]<<"-"<<t[4]<<endl;
}
}
}
sub(s[n]);
otc_2(t[1],t[2],t[3],t[4]);
cout<<t[1]<<"."<<t[2]<<"."<<t[3]<<"."<<t[4]<<".255.255.255"<<endl;
return 0;
}