#include <iostream>
#include <cstring>
using namespace std;
struct str{
string sad;
int si;
}a[1005];
bool c1(string ad){
if(ad[0]=='0'&&ad.length()!=1)return 0;
if(!ad.length())return 0;
if(ad.length()<3)return 1;
if(ad[0]>'2')return 0;
if(ad[0]<'2')return 1;
if(ad[1]>'5')return 0;
if(ad[1]<'5')return 1;
if(ad[2]>'5')return 0;
return 1;
}
bool c2(string ad){
if(ad[0]=='0'&&ad.length()!=1)return 0;
if(!ad.length())return 0;
if(ad.length()<5)return 1;
if(ad[0]>'6')return 0;
if(ad[0]<'6')return 1;
if(ad[1]>'5')return 0;
if(ad[1]<'5')return 1;
if(ad[2]>'5')return 0;
if(ad[2]<'5')return 1;
if(ad[3]>'3')return 0;
if(ad[3]<'3')return 1;
if(ad[4]>'5')return 0;
return 1;
}
bool c(string ad){
if(ad.length()>21)return 0;
int i;
for(i=0;i<ad.length();i++)if(ad[i]==':')break;
if(i>15)return 0;
if(!c2(ad.substr(i+1,ad.length()-i-1)))return 0;
ad=ad.substr(0,i+2);
for(int j=1;j<=3;j++){
for(i=0;i<ad.length();i++)if(ad[i]=='.')break;
if(i>15-j*4)return 0;
if(!c1(ad.substr(0,i+2)))return 0;
ad=ad.substr(i+1,ad.length()-i-1);
}
if(!c1(ad))return 0;
return 1;
}
int main(){
int n,j=1;
cin>>n;
for(int i=1;i<=n;i++){
string op,ad;
cin>>op>>ad;
if(op=="Server"){
if(c(ad)){
bool b=false;
for(int k=1;k<j;k++){
if(a[k].sad==ad){
b=true;
break;
}
}
if(b)cout<<"FAIL\n";
else{
cout<<"OK\n";
a[j].sad=ad;
a[j++].si=i;
}
}
else cout<<"ERR\n";
}
if(op=="Client"){
if(c(ad)){
bool b=false;
int ak;
for(int k=1;k<j;k++){
if(a[k].sad==ad){
b=true;
ak=a[k].si;
break;
}
}
if(b)cout<</*服务机的编号*/ak<<endl;
else cout<<"FAIL\n";
}
else cout<<"ERR\n";
}
}
return 0;
}