#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn=1e3+10;
const int inf=1e9+7;
int n,ans,cnt,sum,sum2;
bool p[maxn],flag;
string str,m;
map<string,int> mp;
inline int read() {
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9') {
if(ch=='-')w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
signed main() {
n=read();
for(int i=1; i<=n; ++i) {
sum=0,cnt=0,sum2=0,flag=0;
cin>>str;
p[i]=(str=="Server");
cin>>m;
int lenm=m.size();
for(int j=0; j<lenm; ++j) {
if(m[j]>'9'||m[j]<'0') {
if(m[j]=='.') {
if(cnt>255||cnt<0||m[j+1]=='.') {
puts("ERR");
flag=1;
break;
}
sum++;
}
if(m[j]==':') {
if(sum!=3) {
puts("ERR");
flag=1;
break;
}
if(cnt>255||cnt<0||j==lenm-1) {
puts("ERR");
flag=1;
break;
}
sum2++;
}
cnt=0;
}
else {
if((m[j-1]<'0'||m[j-1]>'9')&&m[j]=='0'&&m[j+1]>='0'&&m[j+1]<='9') {
puts("ERR");
flag=1;
break;
}
cnt=cnt*10+m[j]-'0';
}
if(j==lenm-1)
if(cnt>65536||cnt<0||sum2!=1) {
puts("ERR");
flag=1;
break;
}
}
if(flag) continue;
if(p[i]) {
if(mp[m]) puts("FAIL");
else mp[m]=i,puts("OK");
}
else {
if(mp.count(m)!=1) puts("FAIL");
else printf("%d\n",mp[m]);
}
}
return 0;
}