#include <bits/stdc++.h>
#define ll long long
#define PII pair<int, int>
#define MP make_pair
using namespace std;
map <string, int> maps;
int n;
int si (string s)
{
int tmp = 0;
for (int i = 0; i < (int) s.size(); i++)
{
tmp = tmp * 10 + s[i] - 48;
}
return tmp;
}
int check (string s)
{
int num[6] = {}, tmp1 = 0, tmp2 = 0, a;
num[0] = -1;
for (int i = 0; i < (int) s.size(); i++)
{
if (s[i] == '.' && s[i + 1] == '.')
{
return 0;
}
else if (s[i] == '.')
{
num[++tmp1] = i;
}
else if (s[i] == ':')
{
++tmp2;
a = i;
}
else if (s[i] < '0' || s[i] > '9')
{
return 0;
}
else if (s[i] == ':' && s[i + 1] < '0' || s[i] == '.' && s[i + 1] > '9')
{
return 0;
}
}
for (int i = 1; i <= 3; i++)
{
if (a < num[i])
{
return 0;
}
}
if (tmp1 != 3 || tmp2 != 1)
{
return 0;
}
for (int i = 1; i <= 3; i++)
{
string t = s.substr(num[i - 1] + 1, num[i] - num[i - 1] - 1);
bool flag = 1;
if (si(t) < 0 || si(t) > 255)
{
return 0;
}
for (int j = 0; j < (int) t.size(); j++)
{
if (t[j] == '0' && flag == 1 && j != 0)
{
return 0;
}
else
{
flag = 0;
}
}
}
string b = s.substr(a + 1, s.size() - a);
bool flag = 1;
for (int i = 0; i < (int) b.size(); i++)
{
if (b[i] == '0' && flag == 1)
{
return 0;
}
else
{
flag = 0;
}
}
if (si (b) < 0 || si(b) > 65535)
{
return 0;
}
return 1;
}
int main ()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
string op, s;
cin >> op >> s;
if (op == "Server")
{
if (check (s))
{
if (!maps[s])
{
cout << "OK" << endl;
maps[s] = i;
}
else
{
cout << "FAIL" << endl;
}
}
else
{
cout << "ERR" << endl;
}
}
else
{
if (check (s))
{
if (maps[s] == 0)
{
cout << "FAIL" << endl;
}
else
{
cout << maps[s] << endl;
}
}
else
{
cout << "ERR" << endl;
}
}
}
return 0;
}