#include <bits/stdc++.h>
using namespace std;
long long n;
struct node{
string what;
string a;
bool can;
}sc[10005];
bool iferr(node x){
long long cnt=0,l=x.a.size();
for (long long i=0;i<=l;i++) {
long long o=0;
if ((x.a[i]=='0' && x.a[i+1]>='0' && x.a[i+1]<='9') || x.a[i]<'0' || x.a[i]>'9') return 0;
while (x.a[i]>='0' && x.a[i]<='9') {
o=o*10+(x.a[i]-'0');
i++;
}
if (cnt<3 && (o<0 || o>225 || x.a[i]!='.')) return 0;
if (cnt==3 && (o<0 || o>225 || x.a[i]!=':')) return 0;
if (cnt==4 && (o<0 || o>65535)) return 0;
cnt++;
}
return 1;
}
long long iffail(node x,long long k) {
if (x.what[0]=='S') k=n;
for (long long i=1;i<=k;i++)
if (sc[i].can==0 && x.what!=sc[i].what && sc[i].a==x.a) {
if (sc[i].what[0]=='C') sc[i].can=1;
return i;
}
return 0;
}
bool ifsame (node x,long long k) {
for (long long i=1;i<k;i++)
if (x.a==sc[i].a && sc[i].what[0]=='S')
return 1;
return 0;
}
int main () {
cin >> n;
for (long long i=1;i<=n;i++)
cin >> sc[i].what >> sc[i].a;
for (long long i=1;i<=n;i++) {
if (iferr(sc[i])==0) {
cout << "ERR" << endl;
sc[i].can=1;
continue;
}
if (iffail(sc[i],i)==0 || (sc[i].what[0]=='S' && ifsame(sc[i],i))) cout << "FAIL" << endl;
else if (sc[i].what[0]=='S') cout << "OK" << endl;
else cout << iffail(sc[i],i) << endl;
}
return 0;
}