#include<iostream>
#include<cstdio>
#include<bits/stdc++.h>
#include<cstring>
using namespace std;
int p;
string barbiq;
struct node{
int a,b,c,d,e;
int mode;
int ans;
}c[1001];
int main(){
cin>>p;
for(int n=1;n<=p;n++){
char mo[7];
cin>>mo;
if(strcmp(mo,"Server")==0){
c[n].mode=1;
}
else c[n].mode=2;
cin>>barbiq;
sscanf(barbiq.c_str(),"%d%c%d%c%d%c%d%c%d",&c[n].a,&mo[1],&c[n].b,&mo[2],&c[n].c,&mo[3],&c[n].d,&mo[4],&c[n].e);
char check[300],pip[300];
sprintf(pip,"%d.%d.%d.%d:%d",c[n].a,c[n].b,c[n].c,c[n].d,c[n].e);
int yu;
for(yu=0;yu<barbiq.length();yu++){
if(barbiq[yu]!=pip[yu]){
c[n].ans=3;
break;
}
}
if(yu!=barbiq.length())continue;
if(!(mo[1]=='.'&&mo[2]=='.'&&mo[3]=='.'&&mo[4]==':'&&c[n].a>=0&&c[n].a<=255&&c[n].b>=0&&c[n].b<=255&&c[n].c>=0&&c[n].c<=255&&c[n].d>=0&&c[n].d<=255&&c[n].e>=0&&c[n].e<=65535))c[n].ans=3;
if(c[n].ans==0){
if(c[n].mode==1){
int i;
for(i=1;i<n;i++)
if(c[i].a==c[n].a&&c[i].b==c[n].b&&c[n].c==c[i].c&&c[n].d==c[i].d&&c[n].e==c[i].e&&c[i].mode==1)break;
if(i==n) c[n].ans=1; else c[n].ans=2;
}
if(c[n].mode==2){
int i;
for(i=1;i<n;i++)
if(c[i].a==c[n].a&&c[i].b==c[n].b&&c[n].c==c[i].c&&c[n].d==c[i].d&&c[n].e==c[i].e&&c[i].mode==1)break;
if(i==n) c[n].ans=2; else c[n].ans=100+i;
}
}
}
for(int n=1;n<=p;n++){
if(c[n].ans==1)printf("OK\n");
else if(c[n].ans==2)printf("FAIL\n");
else if(c[n].ans==3)printf("ERR\n");
else if(c[n].ans>=100)printf("%d\n",c[n].ans-100);
}
return 0;
}