#include<bits/stdc++.h>
using namespace std;
int len[1001];
char ad[1001][28],op[1001][10];
bool stcmp(int x1,int x2){
if(len[x1]!=len[x2]) return false;
for(int i=0;i<len[x1];i++){
if(ad[x1][i]!=ad[x2][i]) return false;
}
return true;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>op[i]>>ad[i];
len[i]=strlen(ad[i]);
int fh=1,flag=0,last=-1,sum=0;
for(int j=0;j<len[i];j++){
if(ad[i][j]==':'||ad[i][j]=='.'){
if(j!=0&&(ad[i][j-1]==':'||ad[i][j-1]=='.')){
flag=1;break;
}
if(fh==1&&j==0){
flag=1;break;
}
if(fh==4&&j==len[i]-1){
flag=1;break;
}
if(fh<4&&ad[i][j]!='.'){
flag=1;break;
}
if(fh==4&&ad[i][j]!=':'){
flag=1;break;
}
if(fh==5){
flag=1;break;
}
fh++;
last=j;
sum=0;
}
else{
sum=sum*10+ad[i][j]-'0';
if(ad[i][j+1]=='.'||ad[i][j+1]==':'||j+1==len[i]){
if((sum<0||sum>255)&&fh<=4)
{
flag=1;break;;
}
if((sum<0||sum>65535)&&fh==5)
{
flag=1;break;;
}
int w=0;
while(sum){
sum/=10;
w++;
}
if(sum==0&&j-last==1) continue;
if(w!=j-last){
flag=1;break;;
}
}
}
}
if(flag==1||fh!=5){
printf("ERR\n");
continue;
}
if(op[i][0]=='5'){
int flag1=0;
for(int j=1;j<=i-1;j++){
if(op[j][0]=='S') continue;
if(stcmp(i,j)){
printf("FAIL\n");
flag1=1;
break;
}
}
if(flag1==1) continue;
else printf("OK\n");
}
else{
int flag2=0;
for(int j=1;j<=i-1;j++){
if(op[j][0]=='S') continue;
if(stcmp(i,j)){
printf("%d\n",j);
flag2=2;
break;
}
}
if(flag2!=2){
printf("FAIL\n");
}
}
}
return 0;
}