#include<bits/stdc++.h>
using namespace std;
int n,sz[10001][1005],sk[10001][1005],topp,t,e,gg,g;
string x,op;
bool f[100001];
bool assd(){
long long p[1005],l=0,pp,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;
if(x[0]==0&&x[1]!='.')return false;
for(int k=0;k<x.size();k++){
if(x[k]=='.')p[++l]=k;
else if(x[k]==':'&&l<3)return false;
else if(x[k]==':'&&l==3)pp=k;
if(l>3)return false;
}
for(int k=0;k<p[1];k++){
sum1=sum1*10+(x[k]-'0');
}
if(sum1>255||sum1<0)return false;
if(x[p[1]+1]=='0'&&x[p[1]+2]!='.')return false;
for(int k=p[1]+1;k<p[2];k++){
sum2=sum2*10+(x[k]-'0');
}
if(sum2>255||sum2<0)return false;
if(x[p[2]+1]=='0'&&x[p[2]+2]!='.')return false;
for(int k=p[2]+1;k<p[3];k++){
sum3=sum3*10+(x[k]-'0');
}
if(sum3>255||sum3<0)return false;
if(x[p[3]+1]=='0'&&x[p[3]+2]!='.')return false;
for(int k=p[3]+1;k<pp;k++){
sum4=sum4*10+(x[k]-'0');
}
if(sum4>255||sum4<0)return false;
if(x[p[pp+1]]=='0'&&x[p[2]+2]!='.')return false;
for(int k=pp+1;k<x.size();k++){
sum5=sum5*10+(x[k]-'0');
}
if(sum5>65535||sum5<0)return false;
if(op[0]=='S'){
sz[++topp][0]=++e;
sz[topp][1]=sum1;
sz[topp][2]=sum2;
sz[topp][3]=sum3;
sz[topp][4]=sum4;
sz[topp][5]=sum5;}
else{
sk[++t][0]=++e;
sk[t][1]=sum1;
sk[t][2]=sum2;
sk[t][3]=sum3;
sk[t][4]=sum4;
sk[t][5]=sum5;
}
return true;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>op>>x;
gg=0;
if(assd()!=true){
cout<<"ERR"<<endl;
continue;
}
if(op[0]=='S'){
memset(f,false,sizeof(f));
for(int k=1;k<=5;k++){
for(int j=1;j<topp;j++){
if(sz[topp][k]!=sz[j][k])f[j]=1;
}
}
for(int j=1;j<topp;j++){
if(f[j]!=1){
topp--;
cout<<"FAIL"<<endl;
gg=1;
break;
}
}
if(gg!=1){
cout<<"OK"<<endl;
}
}
else if(op[0]=='C'){
memset(f,false,sizeof(f));
for(int k=1;k<=5;k++){
for(int j=1;j<=topp;j++){
if(sk[t][k]!=sz[j][k]){
f[j]=1;
}
}
}
for(int j=1;j<=topp;j++){
if(f[j]==0){
cout<<sz[j][0]<<endl;
gg=1;
break;
}
}
if(gg!=1){
cout<<"FAIL"<<endl;
}
}
}
return 0;
}