#include<bits/stdc++.h>
using namespace std;
int n;
int a,b,c,d,e;
bool KeZhiXing = true;
struct Server {
int Id;
int A,B,C,D,E;
}S[1010];
void Had(string ad)//将abcde读出来
{
int a1[6] = {0};
int x = 1,sum = 5;
int Dsum=0, Msum=0;
for(int i = ad.size() - 1;i >= 0;i--)
{
if(ad[i]!='.' && ad[i]!=':')
{
a1[sum]+=int(ad[i]-'0')*x;
x*=10;
}
else
{
if(ad[i+1] == '0')
{
KeZhiXing = false;
return ;
}
if(ad[i]=='.') Dsum++;
if(ad[i]==':') Msum++;
x = 1;
sum--;
}
}
a=a1[1],b=a1[2],c=a1[3],d=a1[4],e=a1[5];
//cout << Dsum << ' ' << Msum << endl;
//printf("%d %d %d %d %d\n",a,b,c,d,e);
if(Dsum!=3 || Msum!=1 ||
a<0 || a>255 ||
b<0 || b>255 ||
c<0 || c>255 ||
d<0 || d>255 ||
e<0 || e>65535)
{
KeZhiXing = false;
}
}
void ServerH(string ad,int id)
{
Had(ad);
if(KeZhiXing == false)
{
printf("ERR\n");
KeZhiXing = true;
}
else
{
for(int i = id;i >= 1;i--)
{
if(a==S[i].A && b==S[i].B && c==S[i].C && d==S[i].D && e==S[i].E)
{
printf("FALL\n");
return ;
}
}
S[id].Id = id;
S[id].A=a, S[id].B=b, S[id].C=c, S[id].D=d, S[id].E=e;
printf("OK\n");
}
}
void ClientH(string ad,int id)
{
Had(ad);
if(KeZhiXing == false)
{
printf("ERR\n");
KeZhiXing = true;
}
else
{
for(int i = id;i >= 1;i--)
{
if(a==S[i].A && b==S[i].B && c==S[i].C && d==S[i].D && e==S[i].E)
{
printf("%d\n",S[i].Id);
return ;
}
}
printf("FALL\n");
}
}
void InputHandle()
{
cin >> n;
for(int i = 1;i <= n;i++)
{
string op, ad;
cin >> op >> ad;
if(op == "Server")
{
ServerH(ad, i);
}
else
{
ClientH(ad, i);
}
}
}
int main()
{
InputHandle();
return 0;
}