#include<bits/stdc++.h>
using namespace std;
int n,sum,sdu,shu,pos,pos1;
string op,s,tmp,suh;
unordered_map<string,int> um;
bool ihf(string s,int w){
sum=0;
for(int i=0;i<s.size();i++)
sum=sum*10+s[i]-'0';
suh=to_string(sum);
return sum<=w&&s.size()>0&&suh==s;
}
bool hf(string s){
sdu=0,shu=0,pos=0,pos1=0;
tmp="";
for(int i=0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9')
tmp=tmp+s[i];
else if(s[i]=='.'||s[i]==':'){
if(s[i]=='.')
pos=i,sdu++;
else
pos1=i,shu++;
if(!ihf(tmp,255))
return false;
tmp="";
}else
return false;
}
return ihf(tmp,65536)&&sdu==3&&shu==1&&pos<pos1;
}
int main(){
freopen("network.in","r",stdin);
freopen("network.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++){
cin>>op>>s;
if(op=="Server"){
if(!hf(s))
puts("ERR");
else if(um.find(s)!=um.end())
puts("FAIL");
else{
puts("OK");
um[s]=i;
}
}else{
if(!hf(s))
puts("ERR");
else if(um.find(s)!=um.end())
printf("%d\n",(*um.find(s)).second);
else
puts("FAIL");
}
}
return 0;
}