#include<bits/stdc++.h>
using namespace std;
struct mud{
char name1[10];
char name2[100];
int a[5]={0,0,0,0,0};
int s1=0,s2=0;
bool hf=0;
int lj=-1,xz;
}a[1005];
int n;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i].name1>>a[i].name2;
for(int j=0;j<strlen(a[i].name2);j++){
if(a[i].name2[j]==':')
a[i].s1++;
if(a[i].name2[j]=='.')
a[i].s2++;
if(a[i].name2[j]=='.' or a[i].name2[j]==':')
if((a[i].name2[j+1]=='0' and a[i].name2[j+2]!=':' and a[i].name2[j+2]!='.') or (a[i].name2[0]=='0' and a[i].name2[1]!='.'))
a[i].s1=0,a[i].s2=0;
}
if(a[i].s1==1 and a[i].s2==3)
a[i].hf=1;
if(a[i].hf==1){
int k=0;
for(int j=0;j<strlen(a[i].name2);j++){
if(a[i].name2[j]>='0' and a[i].name2[j]<='9'){
a[i].a[k]*=10;
a[i].a[k]+=a[i].name2[j]-'0';
}else
k++;
}
if(a[i].a[0]<=255 and a[i].a[1]<=255 and a[i].a[2]<=255 and a[i].a[3]<=255 and a[i].a[4]<=65535)
a[i].hf=1;
else
a[i].hf=0;
}
if(a[i].hf==1){
if(a[i].name1[0]=='C')
a[i].xz=1;
else if(a[i].name1[0]=='S')
a[i].xz=2;
}
}
for(int i=0;i<n;i++){
if(a[i].hf==1){
if(a[i].xz==2){
for(int j=i;j<=n;j++){
if(a[j].xz==1 and a[j].hf==1 and a[j].lj==-1){
bool h=1;
for(int r=0;r<=4;r++)
if(a[j].a[r]!=a[i].a[r]){
h=0;
}
if(h==1){
a[j].lj=i;
a[i].lj=j;
}
}
}
if(a[i].lj!=-1)
printf("OK\n");
else
printf("FAIL\n");
}else{
if(a[i].lj!=-1)
printf("%d\n",a[i].lj+1);
else
printf("FAIL\n");
}
}else{
printf("ERR\n");
}
}
return 0;
}