#include<bits/stdc++.h>
using namespace std;
struct node{
int a,b,c,d,e,id;
};
vector<node> g;
int n;
string s,s1;
bool pd(char s){
return s<='9'&&s>='0';
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>s>>s1;
if(s1.size()>21){
puts("ERR");
continue;
}
bool t=0;
int cnt=0,sum=0,a[5]={},k=0;
for(int i=0,l=s1.size();i<l;i++){
if(s1[i]=='-'){
t=1;
break;
}
if(s1[i]=='.')
cnt++,k++;
else if(s1[i]==':')
k++,sum++;
else{
if(s1[i]=='0'){
if((pd(s1[i-1]))||(!pd(s1[i-1])&&!pd(s1[i-1])))
a[k]*=10;
else{
t=1;
break;
}
} else
a[k]=a[k]*10+s1[i]-'0';
}
if(cnt>3||sum>1||t||a[0]>255||a[1]>255||a[2]>255||a[3]>255||a[4]>65535){
t=1;
break;
}
}
if(t){
puts("ERR");
continue;
}
k=-1;
for(int i=0,l=g.size();i<l;i++){
if(g[i].a==a[0]&&g[i].b==a[1]&&g[i].c==a[2]&&g[i].d==a[3]&&g[i].e==a[4]){
k=i;
break;
}
}
if(s=="Server"){
if(k==-1){
puts("OK");
node f=node({a[0],a[1],a[2],a[3],a[4],i});
g.push_back(f);
} else{
puts("FAIL");
}
} else{
if(k==-1)
puts("FAIL");
else
printf("%d\n",g[k].id);
}
}
return 0;
}