#include<bits/stdc++.h>
using namespace std;
int n,cnt;
string op,ad;
map<string,int>cnt_Server;
bool check(string now){
int len=now.size();
int cnt=0,cnt1=0;
for(int i=0;i<len;i++){
if(now[i]=='.'){
cnt++;
if(i==len-1||now[i+1]==':'||now[i+1]=='.'){
return false;
}if(cnt>3){
return false;
}else if(cnt1>0){
return false;
}
}else if(now[i]==':'){
cnt1++;
if(i==len-1||now[i+1]==':'||now[i+1]=='.'){
return false;
}
if(cnt1>1){
return false;
}else if(cnt<3){
return false;
}
}else if(now[i]=='0'&&now[i+1]!='.'&&now[i+1]!=':'&&(now[i-1]=='.'||now[i-1]==':')){
return false;
}
}cnt=0,cnt1=0;
for(int i=0;i<len;i++){
if(now[i]>='0'&&now[i]<='9'){
int j=i;
long long ret=0;
while(now[j]>='0'&&now[j]<='9'){
ret=ret*10+now[j]-'0';
j++;
}if(cnt1==1){
if(ret>65535){
return false;
}
}else if(cnt<=3){
if(ret>255){
return false;
}
}i=j-1;
}if(now[i]=='.'){
cnt++;
}if(now[i]==':'){
cnt1++;
}
}return true;
}int check_Server(string now){
if(cnt_Server[now]==0&&check(now)==1){
return 1;
}else if(cnt_Server[now]>=1&&check(now)==1){
return 2;
}return 3;
}int check_Client(string now){
if(check(now)==1){
if(cnt_Server[now]>=1){
return 1;
}else if(cnt_Server[now]==0){
return 2;
}
}return 0;
}int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
cin>>op>>ad;
cnt++;
if(op=="Server"){
if(check_Server(ad)==1){
printf("OK\n");
cnt_Server[ad]=cnt;
}else if(check_Server(ad)==2){
printf("FAIL\n");
}else if(check_Server(ad)==3){
printf("ERR\n");
}
}else if(op=="Client"){
if(check_Client(ad)==0){
printf("ERR\n");
}else if(check_Client(ad)==2){
printf("FAIL\n");
}else if(check_Client(ad)==1){
printf("%d\n",cnt_Server[ad]);
}
}
}
return 0;
}```