#include<bits/stdc++.h>
#define ll long long
#define db double
using namespace std;
struct node{
string s;
int v[10];
}a[10010];
inline ll read(){
ll x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
char c;
bool p=true,f=true;
int u=0,x=0,m=0,o=0,l=0;
cin>>a[i].s;
getchar();
c=getchar();
while(c!='\n'){
if((c>='0'&&c<='9')||c=='-'){
l=0;
int e=1;
if(c=='-'){
e=-1;c=getchar();
}
while(c>='0'&&c<='9'){
l++;
if(l>1&&x==0){
p=false;
}
x=x*10+c-'0';
c=getchar();
}
a[i].v[++u]=x*e;
x=0;
}else if(c==':'){
m++;
c=getchar();
}else if(c=='.'){
o++;
c=getchar();
}
}
if(m!=1||o!=3||u!=5){
p=false;
}
for(int j=1;j<=4;j++){
if(0>a[i].v[j]||a[i].v[j]>255){
p=false;
}
}
if(a[i].v[5]<0||a[i].v[5]>65535){
p=false;
}
if(p){
if(a[i].s=="Server"){
for(int j=1;j<=i-1;j++){
if(a[j].s=="Server"){
int h=0;
for(int k=1;k<=5;k++){
if(a[i].v[k]==a[j].v[k]){
h++;
}
}
if(h==5){
cout<<"FAIL"<<endl;
f=false;
break;
}
}
}
if(f){
cout<<"OK"<<endl;
}
}
if(a[i].s=="Client"){
for(int j=1;j<=i-1;j++){
if(a[j].s=="Server"){
int h=0;
for(int k=1;k<=5;k++){
if(a[i].v[k]==a[j].v[k]){
h++;
}
}
if(h==5){
cout<<j<<endl;
f=false;
break;
}
}
}
if(f){
cout<<"FAIL"<<endl;
}
}
}else{
cout<<"ERR"<<endl;
}
}
return 0;
}