#include<bits/stdc++.h>
using namespace std;
struct node{
string s;
int num;
}a[1001];
int main(){
//freopen("P7911_13.in","r",stdin);
//freopen("1.out","w",stdout);
int n;
cin>>n;
string x,y;
int jishu=0;
for(int i=1;i<=n;i++){
cin>>x>>y;
int flag1=0,flag2=0,sum1=0,sum2=0,sum0=0;
int number=0;
for(int j=0;j<y.length();j++){
if(y[j]=='.'||y[j]==':'){
int xyz=number;
sum1++;
if(number<0||number>255){
flag2=1;
break;
}
while(number!=0){
if(number%10==0){
sum0--;
}
number/=10;
}
if(sum0!=0&&xyz!=0){
flag2=1;
break;
}
sum0=0;
}
if(y[j]==':'){
sum1--;
sum2++;
flag1=1;
}
if(y[j]>='0'&&y[j]<='9'){
if(y[j]=='0'){
sum0++;
}
number=number*10+y[j]-'0';
}
}
int abc=number;
while(number!=0){
if(number%10==0){
sum0--;
}
number/=10;
}
if(flag2==1||sum1!=3||sum2!=1||(sum0!=0&&abc!=0)||y[y.length()-1]>'9'||y[y.length()-1]<'0'||y[0]>'9'||y[0]<'0'){
cout<<"ERR"<<endl;
continue;
}else{
if(abc<0||abc>65535){
cout<<"ERR"<<endl;
continue;
}
}
sum1=0;
sum2=0;
sum0=0;
number=0;
flag1=0;
flag2=0;
if(x=="Server"){
for(int k=1;k<=jishu;k++){
if(a[k].s==y){
flag2=1;
cout<<"FAIL"<<endl;
break;
}
}
if(flag2==0){
jishu++;
a[jishu].s=y;
a[jishu].num=i;
cout<<"OK"<<endl;
}
}else{
for(int k=1;k<=jishu;k++){
if(a[k].s==y){
cout<<a[k].num<<endl;
flag2=1;
break;
}
}
if(flag2==0){
cout<<"FAIL"<<endl;
continue;
}
}
}
return 0;
}