#include<bits/stdc++.h>
using namespace std;
int n;
int pos[6];//'.'和':'的所在位置(ad中)
int num[6];//a,b,c,d,e
int lenp=1;
int cnt1=0,cnt2=0;//'.'和':'的个数
string op,ad;
int fs=0;//server数组中是否已经有内容
string server[1010];//符合条件的服务机地址
int to_int(string s,int id)
{
if(s[0]=='0' && s!="0")//判断是否有前导0
{
return -1;
}
int ans=0;
for(int i=0; i<s.size(); i++)
{
ans=ans*10+(int)(s[i]-'0');
}
if(id<5)//a,b,c,d
{
return ((ans>=0 && ans<=255)? ans:-1);//-1:方便下面判断
}
else//e
{
return ((ans>=0 && ans<=65535)? ans:-1);
}
}
int main()
{
cin>>n;
int f4=0;
for(int p=1; p<=n; p++)
{
cin>>op>>ad;
for(int i=0; i<ad.size(); i++)
{
if(ad[i]=='.')
{
pos[lenp]=i;//记录下这个'.'的位置
lenp++;
cnt1++;
}
else if(ad[i]==':')
{
pos[lenp]=i;//记录下这个':'的位置
lenp++;
cnt2++;
}
if(lenp>5)//'.'和':'的个数和超过4
{
cout<<"ERR"<<endl;
f4=1;
break;
}
}
if(f4==1)
{
lenp=1;
cnt1=0,cnt2=0;
continue;
}
if(lenp<5 || cnt1!=3 || cnt2!=1 || ad[pos[4]]!=':')//ad中记录下的第四个非数字字符的位置的字符不为':'
{
cout<<"ERR"<<endl;
lenp=1;
cnt1=0,cnt2=0;
continue;
}
pos[0]=-1;//方便下面的取字串
pos[5]=ad.size();//同73行
for(int i=1; i<=5; i++)
{
num[i]=to_int(ad.substr(pos[i-1]+1,pos[i]-pos[i-1]-1),i);
}
if(op=="Server")
{
if(num[1]==-1 || num[2]==-1 || num[3]==-1 || num[4]==-1 || num[5]==-1)
{
cout<<"ERR"<<endl;
}
else
{
int f=0;
for(int i=1; i<=p; i++)
{
if(server[i]==ad)
{
f=1;
}
}
if(f==1 && fs==1)//和server数组中存储的地址冲突
{
cout<<"FAIL"<<endl;
}
else if(f==0 || fs==0)
{
cout<<"OK"<<endl;
server[p]=ad;
fs=1;//server中有内容
}
}
}
else
{
if(num[1]==-1 || num[2]==-1 || num[3]==-1 || num[4]==-1 || num[5]==-1)
{
cout<<"ERR"<<endl;
}
else
{
int f=0;
for(int i=1; i<=p; i++)
{
if(server[i]==ad)
{
cout<<i<<endl;
f=1;
break;
}
}
if(f==0)
{
cout<<"FAIL"<<endl;
}
}
}
lenp=1;
cnt1=0,cnt2=0;
}
return 0;
}