#include <bits/stdc++.h>
using namespace std;
const int pw[]={1,10,100,1000,10000,0};
map<string,bool> vis;
map<string,int> num;
int n;
string op,ad;
bool check(string a)
{
int l=a.size(),cnt1=0,cnt2=0;
for(int i=0;i<l-1;i++)
{
if((a[i]<'0'||a[i]>'9')&&a[i]!='.'&&a[i]!=':') return true;
if(a[i]=='0'&&(i==0||a[i-1]=='.'||a[i-1]==':')&&a[i+1]!='.'&&a[i+1]!=':') return true;
if(a[i]=='.') cnt1++;
if((a[i]=='.'&&a[i+1]=='.')||(cnt1<3&&a[i]==':')) return true;
if(a[i]==':') cnt2++;
if(cnt1>3||cnt2>1) return true;
if(i==l-2&&(a[i+1]=='.'||a[i+1]==':')) return true;
}
int x=0;
cnt1=0;
for(int i=l-1;i>=0;i--)
{
if(a[i]==':')
{
if(x>65535)
return true;
x=0;
cnt1=0;
continue;
}
if(a[i]=='.')
{
if(x>255)
return true;
x=0;
cnt1=0;
continue;
}
x=x+(a[i]-'0')*pw[cnt1++];
}
if(x>255) return true;
return false;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
cin>>op>>ad;
if(check(ad))
{
printf("ERR\n");
continue;
}
if(op=="Server")
{
if(!vis[ad])
{
printf("OK\n");
vis[ad]=true;
num[ad]=i;
continue;
}
else
{
printf("FAIL\n");
continue;
}
}
else
{
if(!vis[ad])
{
printf("FAIL\n");
continue;
}
else
{
printf("%d\n",num[ad]);
continue;
}
}
}
return 0;
}