/*
Name:
Copyright: s26
Author: s26
Date:31/10/21 13:21
*/
#define taskname ""
//#define LOCAL
#ifdef taskname
#include<bits/stdc++.h>
#define endl "\n"
using namespace std;
map <string,int> computer;
bool work(string s,int l,int r,int lim) {
if(l>r) return 0;
l++; r--;
if(r-l+1>=6) return 0;
if(s[l]=='0'&&l!=r) return 0;
long long ret=0,p=1;
for(int i=r;i>=l&&ret<=lim;i--) ret+=p*(s[i]-'0'),p*=10;
return ret<=lim&&ret>=0;
}
void run(int cnt) {
string type,s; cin>>type>>s;
if(!isdigit(s.back())) {
puts("ERR"); return;
}
vector <int> pos; pos.push_back(-1);
for(int i=0;i<s.size();i++) if(!isdigit(s[i])) pos.push_back(i);
if(pos.size()!=5) {
puts("ERR"); return;
}
if(s[pos[1]]!='.'||s[pos[2]]!='.'||s[pos[3]]!='.'||s[pos[4]]!=':') {
puts("ERR"); return;
}
pos.push_back(s.size());
bool ok=work(s,pos[4],pos[5],65535);
for(int i=0;i<4;i++) ok&=work(s,pos[i],pos[i+1],255);
if(!ok) {
puts("ERR"); return;
}
if(type=="Server") {
if(computer[s]) {
puts("FAIL"); return;
}
puts("OK"); computer[s]=cnt;
} else {
if(!computer[s]) {
puts("FAIL"); return;
}
cout<<computer[s]<<endl;
}
}
int main(int argc,char **argv) {
#ifdef LOCAL
(freopen(taskname".in","r",stdin));
(freopen(taskname".out","w",stdout));
#endif
int T; cin>>T;
int i=1;
while(T--) {
run(i);
i++;
}
}
#endif