#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e3+50;
typedef long long LL;
struct node{
string ss1,s;
int a=0,b=0,c=0,d=0,e=0,k=0,kk=0;
string ans="";
bool ji,pan=false;
int num;
int ans2;
}comp[MAXN];
int n;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
string s2="";
string s3="";
int k3=0;
cin>>comp[i].s>>comp[i].ss1;
comp[i].num=i;
int sizes1=comp[i].ss1.length();
if(comp[i].s=="Server")comp[i].ji=true;
else comp[i].ji=false;
for(int j=0;j<sizes1;j++){
if(k3==4){
s3+=comp[i].ss1[j];
}
if(comp[i].ss1[j]!='.'&&comp[i].ss1[j]!=':'){
s2+=comp[i].ss1[j];
}
else if(comp[i].ss1[j]=='.'){
k3++;
comp[i].k++;
int sizes2=s2.length();
if(comp[i].k>3){
comp[i].ans="ERR";
break;
}
else if(sizes2>1&&s2[0]=='0'){
comp[i].ans="ERR";
break;
}
else{
if(k3==1){
int sizes22=sizes2;
for(int m=0;m<sizes2;m++){
int kw=1;
for(int n=1;n<=m;n++){
kw*=10;
}
comp[i].a+=(s2[sizes22-1]-'0')*kw;
sizes22--;
}
if(comp[i].a>255){
comp[i].ans="ERR";
break;
}
s2="";
continue;
}
if(k3==2){
int sizes22=sizes2;
for(int m=0;m<sizes2;m++){
int kw=1;
for(int n=1;n<=m;n++){
kw*=10;
}
comp[i].b+=(s2[sizes22-1]-'0')*kw;
sizes22--;
}
if(comp[i].b>255){
comp[i].ans="ERR";
break;
}
s2="";
continue;
}
if(k3==3){
int sizes22=sizes2;
for(int m=0;m<sizes2;m++){
int kw=1;
for(int n=1;n<=m;n++){
kw*=10;
}
comp[i].c+=(s2[sizes22-1]-'0')*kw;
sizes22--;
}
if(comp[i].c>255){
comp[i].ans="ERR";
break;
}
s2="";
continue;
}
}
}
else{
k3++;
comp[i].kk++;
int sizes2=s2.length();
if(sizes2>1&&s2[0]=='0'){
comp[i].ans="ERR";
break;
}
int sizes22=sizes2;
for(int m=0;m<sizes2;m++){
int kw=1;
for(int n=1;n<=m;n++){
kw*=10;
}
comp[i].d+=(s2[sizes22-1]-'0')*kw;
sizes22--;
}
if(comp[i].d>255){
comp[i].ans="ERR";
break;
}
s2="";
continue;
}
}
int sizes3=s3.size();
if(sizes3>1&&s3[0]=='0'){
comp[i].ans="ERR";
}
int sizes33=sizes3;
for(int m=0;m<sizes3;m++){
int kw=1;
for(int n=1;n<=m;n++){
kw*=10;
}
comp[i].e+=(s3[sizes33-1]-'0')*kw;
sizes33--;
}
if(comp[i].e>65525){
comp[i].ans="ERR";
}
if(comp[i].k!=3||comp[i].kk!=1){
comp[i].ans="ERR";
}
}
for(int i=1;i<=n;i++){
if(comp[i].ji==false&&comp[i].ans==""){
for(int j=1;j<=i;j++){
if(comp[j].a==comp[i].a&&comp[j].b==comp[i].b&&comp[j].c==comp[i].c&&comp[j].d==comp[i].d&&comp[j].e==comp[i].e&&comp[j].ji==true&&comp[j].ans!="FALL"){
comp[i].ans2=comp[j].num;
comp[i].ans="1";
break;
}
}
if(comp[i].ans==""){
comp[i].ans="FAIL";
}
}
if(comp[i].ji==true&&comp[i].ans==""){
comp[i].ans="OK";
for(int j=1;j<=i-1;j++){
if(comp[j].a==comp[i].a&&comp[j].b==comp[i].b&&comp[j].c==comp[i].c&&comp[j].d==comp[i].d&&comp[j].e==comp[i].e&&comp[j].ji==true){
comp[i].ans="FAIL";
}
}
}
}
for(int i=1;i<=n;i++){
if(comp[i].ans=="1"){
printf("%d\n",comp[i].ans2);
}
else{
cout<<comp[i].ans<<endl;
}
}
return 0;
}