#include <bits/stdc++.h>
using namespace std;
bool pd(string s)
{
if(s == "") return true;
if(s[0] == '.' || s[0] == ':') return true;
bool flag = false;
int a = 0;
long long k = 0,d = 0,p,up = -1;
for(long long i = 0;i < s.size();i ++)
{
if(s[i] == '.')
{
if(a > 255)
{
flag = true;
break;
}
k ++,a = 0;
}
else if(s[i] == ':')
{
p = i + 1;
if(a > 255)
{
flag = true;
break;
}
d ++,a = 0;
break;
}
else
{
a *= 10;
a += s[i] - '0';
}
}
if(d != 1) return true;
else if(k != 3) return true;
else
{
a = 0;
for(long long i = p;i < s.size();i ++)
{
a *= 10;
a += s[i] - '0';
}
if(a >= 65535) return true;
else return false;
}
}
int main()
{
long long n;
cin >> n;
string s[10005];
for(long long i = 1;i <= n;i ++)
{
string ID,OP;
cin >> ID >> OP;
bool flag = false;
for(int j = 0;j < OP.size();j ++){
if((OP[j - 1] == '.' || OP[j - 1] == ':' || j == 0) && OP[j] == '0' && (OP[j + 1] != '.' && OP[j + 1] != ':')){
cout << "ERR" << endl;
flag = true;
break;
}
}
if(flag) continue;
if(ID == "Server")
{
if(pd(OP))
{
cout << "ERR" << endl;
continue;
}
bool flag = false;
for(long long j = 1;j < i;j ++)
{
if(s[j] == OP)
{
flag = true;
break;
}
}
if(!flag)
{
cout << "OK" << endl;
s[i] = OP;
}
else{
cout << "FAIL" << endl;
}
}
else{
if(pd(OP))
{
cout << "ERR" << endl;
continue;
}
bool flag = false;
long long ans;
for(long long j = 1;j < i;j ++)
{
if(s[j] == OP)
{
flag = true,ans = j;
break;
}
}
if(flag)
{
cout << ans << endl;
}
else{
cout << "FAIL" << endl;
}
}
}
return 0;
}