#include <bits/stdc++.h>
using namespace std;
int n;
const int key=1e9+7;
string s;
map<string , int > mp;
int p[4];
bool check()
{
int len=s.length(),s1=0,s2=0,tot=0;
long long t1=0,t2=0,t3=0,t4=0,t5=0;
memset(p,0,sizeof(p));
if (s[len-1]==':') return false;
for (int i=0;i<len;i++)
if (s[i]=='.') s1++;
else if (s[i]==':')
{
if (s1!=3) return false;
s2++;
}
else if (s[i]=='-') return false;
if (s1!=3 || s2!=1) return false;
for (int i=0;i<len;i++)
if (s[i]=='.' || s[i]==':') p[tot++]=i;
for (int i=0;i<3;i++)
if (p[i+1]-p[i]==1) return false;
if (p[0]>3 || p[1]-p[0]-1>3 || p[2]-p[1]-1>3 || p[3]-p[2]-1>3 || len-p[3]-1>5) return false;
for (int i=0;i<p[0];i++)
t1=(long long) (t1*10+s[i]-48);
for (int i=p[0]+1;i<p[1];i++)
t2=(long long) (t2*10+s[i]-48);
for (int i=p[1]+1;i<p[2];i++)
t3=(long long) (t3*10+s[i]-48);
for (int i=p[2]+1;i<p[3];i++)
t4=(long long) (t4*10+s[i]-48);
for (int i=p[3]+1;i<len;i++)
t5=(long long) (t5*10+s[i]-48);
if (t1>255 || t2>255 || t3>255 || t4>255 || t5>65535) return false;
if (t1!=0 && s[0]=='0' && s[1]=='0') return false;
if (t2!=0 && s[p[0]+1]=='0' && s[p[0]+2]=='0') return false;
if (t3!=0 && s[p[1]+1]=='0' && s[p[1]+2]=='0') return false;
if (t4!=0 && s[p[2]+1]=='0' && s[p[2]+2]=='0') return false;
if (len==p[3]+2) return true;
if (t5!=0 && s[p[3]+1]=='0' && s[p[3]+2]=='0') return false;
return true;
}
int main()
{
/* freopen("network.in","r",stdin);
freopen("network.out","w",stdout);*/
ios::sync_with_stdio(false);
cin>>n;
for (int i=1;i<=n;i++)
{
string op;
cin>>op>>s;
if (check())
{
if (op=="Server")
{
if (mp[s]) cout<<"FAIL"<<endl;
else
{
cout<<"OK"<<endl;
mp[s]=i;
}
}
else if (!mp[s]) cout<<"FAIL"<<endl;
else cout<<mp[s]<<endl;
}
else cout<<"ERR"<<endl;
}
return 0;
}