rt
#include<bits/stdc++.h>
using namespace std;
const long long N=1005;
struct comp
{
string name,address,ans;
long long n;
};
long long n,total;
comp c[N];
map<string,int>mp;
bool check(string a)
{
long long leng=a.size(),num[5],top=0,i=0,k;
memset(num,-1,sizeof(num));
bool f=true;
while(i<leng)
{
if(i==0||(a[i]=='.'&&top<=3)||(a[i]==':'&&top==4))
{
if(i!=0)
{
i++;
}
if(a[i]=='0'&&a[i+1]>='0'&&a[i+1]<='9')
{
f=false;
break;
}
if(a[i-1]==':'&&top==4)
{
k=65536;
}
else
{
k=256;
}
num[top]=0;
while(a[i]>='0'&&a[i]<='9'&&i<leng)
{
num[top]*=10;
num[top]+=(a[i]-'0');
i++;
}
if(num[top]<=-1||num[top]>=k)
{
f=false;
break;
}
top++;
}
else
{
f=false;
break;
}
}
return f;
}
string re(string a)
{
string b;
long long leng=a.size();
for(long long i=0,j=leng-1;i<leng;i++,j--)
{
b+=a[j];
}
return b.c_str();
}
string search(string a,long long k)
{
if(mp.find(a)!=mp.end())
{
long long o=mp[a];
string b;
while(o)
{
b+=(o%10)+'0';
o/=10;
}
return re(b);
}
if(c[k].name[0]=='S')
{
mp.insert(pair<string,int>(a,k));
return "OK";
}
else
{
return "FAIL";
}
}
string Server(string a,long long k)
{
string f=search(a,k);
if(f!="OK")
{
return "FAIL";
}
else
{
return f;
}
}
string Client(string a,long long k)
{
return search(a,k);
}
int main()
{
cin>>n;
for(long long i=1;i<=n;i++)
{
cin>>c[i].name>>c[i].address;
c[i].n=i;
if(!check(c[i].address))
{
c[i].ans="ERR";
}
if(c[i].ans.empty())
{
if(c[i].name[0]=='S')
{
c[i].ans=Server(c[i].address,i);
}
if(c[i].name[0]=='C')
{
c[i].ans=Client(c[i].address,i);
}
}
}
for(long long i=1;i<=n;i++)
{
cout<<c[i].ans<<endl;
}
return 0;
}