#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e3+5;
int T;
struct Node{
string op;
int a,b,c,d,e;
}n[N];
int check(string s,int x){
if(s=="Server"){
for(int i=1;i<x;i++){
if(n[i].op==s){
if(n[i].a==n[x].a&&n[i].b==n[x].b&&n[i].c==n[x].c&&n[i].d==n[x].d&&n[i].e==n[x].e){
return 0;
}
}
}
return 1;
}else{
for(int i=1;i<x;i++){
if(n[i].op=="Server"){
if(n[i].a==n[x].a&&n[i].b==n[x].b&&n[i].c==n[x].c&&n[i].d==n[x].d&&n[i].e==n[x].e){
return i;
}
}
}
return 0;
}
}
signed main(){
freopen("network.in","r",stdin);
freopen("network.out","w",stdout);
cin>>T;
for(int i=1;i<=T;i++){
cin>>n[i].op;
string address;
cin>>address;
replace(address.begin(), address.end(), '.', ' ');
replace(address.begin(), address.end(), ':', ' ');
int t=sscanf(address.c_str(),"%lld %lld %lld %lld %lld",&n[i].a,&n[i].b,&n[i].c,&n[i].d,&n[i].e);
if(t!=5) puts("ERR");
else if(n[i].a<0||n[i].b<0||n[i].c<0||n[i].d<0||n[i].e<0){
puts("ERR");
}else if(n[i].a>255||n[i].b>255||n[i].c>255||n[i].d>255||n[i].e>65535){
puts("ERR");
}else{
if(n[i].op=="Server"){
if(check(n[i].op,i)){
puts("OK");
}else{
puts("FAIL");
}
}else if(n[i].op=="Client"){
int res=check(n[i].op,i);
if(res){
cout<<res<<endl;
}else{
puts("FAIL");
}
}else{
puts("ERR");
}
}
}
return 0;
}