#include <bits/stdc++.h>
using namespace std;
int n;
string op,ad;
map<string,int>add;
int maxm[5]={255,255,255,255,65535};
bool check(string ad){
int p=0,tp=0,ccf=0,num=0;
bool zero1=false,zero2=false;
for(int i=0;i<ad.length();i++){
if(ad[i]=='.')p++;
if(ad[i]==':'){
if(p!=3)return false;
tp++;
}
}
if(p!=3&&tp!=1)return false;
ad+='.';
for(int i=0;i<ad.length();i++){
if(ad[i]!='.'&&ad[i]!=':'){
num=num*10+ad[i]-'0';
if(!num){
if(zero1)zero2=true;
else zero1=true;
}
if(num>maxm[ccf])return false;
}
else{
if(i<ad.length()-1){
if((ad[i+1]=='.'||ad[i+1]==':'))return false;
}
if(i==0)return false;
if(zero1&&(zero2||num))return false;
num=0;ccf++;zero1=false;zero2=false;
}
}
return true;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>op>>ad;
if(!check(ad)){
cout<<"ERR"<<endl;
continue;
}
if(op=="Server"){
if(add.find(ad)!=add.end())cout<<"FAIL"<<endl;
else{
add.insert(make_pair(ad,i));
cout<<"OK"<<endl;
}
}
else{
if(add.find(ad)==add.end())cout<<"FAIL"<<endl;
else cout<<add[ad]<<endl;
}
}
return 0;
}