#include<bits/stdc++.h>
using namespace std;
long long n,si=1;
unordered_map<string,long long> web;
bool zero(string a){
if(a.size()>1 && a[0]=='0') return 1;
if(a[0]=='-') return 1;
return 0;
}
long long ERR(string a){
long long l=a.size();
if(l<9) return 1;
long long ipx1=a.find('.',0);
if(ipx1==string::npos) return 1;
long long ipx2=a.find('.',ipx1+1);
if(ipx2==string::npos) return 1;
long long ipx3=a.find('.',ipx2+1);
if(ipx3==string::npos) return 1;
long long ipx4=a.find('.',ipx3+1);
if(ipx4!=string::npos) return 1;
long long ipx5=a.find(':');
if(ipx5==string::npos) return 1;
long long ipx6=a.find(':',ipx5+1);
if(ipx6!=string::npos) return 1;
string num1=a.substr(0,ipx1);
string num2=a.substr(ipx1+1,ipx2-ipx1-1);
string num3=a.substr(ipx2+1,ipx3-ipx2-1);
string num4=a.substr(ipx3+1,ipx5-ipx3-1);
string num5=a.substr(ipx5+1);
if(num1.empty() || num2.empty() || num3.empty() || num4.empty() || num5.empty() ) return 1;
if(zero(num1) || zero(num2) || zero(num3) || zero(num4) || zero(num5)) return 1;
if(stoi(num1)>255 || stoi(num2)>255 || stoi(num3)>255 || stoi(num4)>255 || stoi(num5)>65535) return 1;
}
int main(){
scanf("%lld",&n);
for(long long i=1;i<=n;i++){
string op,add;
cin>>op>>add;
if(ERR(add)==1){
cout<<"ERR\n";
}
else if(op=="Server"){
if(web[add]!=0) cout<<"FAIL\n";
else{
web[add]=i;
cout<<"OK\n";
}
}
else if(op=="Client"){
if(!web[add]) cout<<"FAIL\n";
else cout<<web[add]<<"\n";
}
}
return 0;
}