#include<bits/stdc++.h>
#define min(a,b)(a<b?a:b)
#define max(a,b)(a>b?a:b)
#define int long long
#define mod 1000000007
#define maxn 111111
#define maxm 2222222
#define inf 1e36
#define lowbit(i) (i&-i)
#define kill while(1){continue;}
#define fresh std::cout<<std::flush
#define pi acos(-1.0)
#define fri std::freopen(("data"+std::to_string(T)+".in").c_str(),"r",stdin);
#define fro std::freopen(("data"+std::to_string(T)+".out").c_str(),"w",stdout);
#define frw std::freopen(("data"+std::to_string(T)+".in").c_str(),"w",stdout);
using namespace std;
inline int read()
{
char ch=getchar();
int s=0,w=1;
while(ch<'0'||ch>'9')
{
if(ch=='-'){w=-1;}
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
s=(s<<1)+(s<<3)+ch-48;
ch=getchar();
}
return w*s;
}
inline void print(int x)
{
if(x<0){putchar('-'),x=-x;}
if(x>9){print(x/10);}
putchar(x%10+'0');
}
inline int qpow(int a,int b,int p)
{
int ans=1,base=a;
while(b)
{
if(b&1){ans*=base;ans%=p;}
base*=base;
base%=p;
b>>=1;
}
return ans%p;
}
inline int gcd(int a,int b){return !b?a:gcd(b,a%b);}
inline int lcm(int a,int b){return a*b/gcd(a,b);}
inline int log2(int n){int cnt=0;while(n){n/=2;cnt++;}return cnt;}
inline int qabs(int a){return a<0?-a:a;}
inline string read_char()
{
char ch=getchar();
string s;
while(ch!=EOF&&ch!='\n')
{
s+=ch;
ch=getchar();
}
return s;
}
inline void pc(int x)
{
if(x==1)printf("\n");
if(x==2)printf(" ");
if(x==3)printf("YES");
if(x==4)printf("Yes");
if(x==5)printf("yes");
if(x==6)printf("NO");
if(x==7)printf("No");
if(x==8)printf("no");
if(x==9)printf("/");
if(x==10)printf("+");
if(x==11)printf("-");
if(x==12)printf("*");
if(x==13)printf("No Solution");
if(x==14)printf("#");
if(x==15)printf(".");
}
struct node{int a,b,c,d,e,ok;}ip[maxn];
bool init(string ad,int z)
{
bool flag=0;
int now=0;
if(ad[now]=='-'){flag=1;}
if(ad[now]=='0'&&ad[now+1]>='0'&&ad[now+1]<'9'){flag=1;}
while(ad[now]!='.'&&!flag)
{
if(ad[now]==':'){flag=1;break;}
ip[z].a=ip[z].a*10+(ad[now]-'0');now++;
}now++;
if(ad[now]=='-'){flag=1;}
if(ad[now]=='0'&&ad[now+1]>='0'&&ad[now+1]<'9'){flag=1;}
while(ad[now]!='.'&&!flag)
{
if(ad[now]==':'){flag=1;break;}
ip[z].b=ip[z].b*10+(ad[now]-'0');now++;
}now++;
if(ad[now]=='-'){flag=1;}
if(ad[now]=='0'&&ad[now+1]>='0'&&ad[now+1]<'9'){flag=1;}
while(ad[now]!='.'&&!flag)
{
if(ad[now]==':'){flag=1;break;}
ip[z].c=ip[z].c*10+(ad[now]-'0');now++;
}now++;
if(ad[now]=='-'){flag=1;}
if(ad[now]=='0'&&ad[now+1]>='0'&&ad[now+1]<'9'){flag=1;}
while(ad[now]!=':'&&!flag)
{
ip[z].d=ip[z].d*10+(ad[now]-'0');now++;
}now++;
if(ad[now]=='-'){flag=1;}
if(ad[now]=='0'&&ad[now+1]>='0'&&ad[now+1]<'9'){flag=1;}
while(now<ad.size()&&!flag){ip[z].e=ip[z].e*10+(ad[now]-'0');now++;}
return flag;
}
bool check(string ad)
{
int num1=0,num2=0;
for(int i=0;i<ad.size();i++)
{
if(ad[i]=='.'){num1++;}
if(ad[i]==':'){num2++;}
}
//cout<<num1<<" "<<num2<<endl;
if(num1!=3){return 1;}
if(num2!=1){return 1;}
return 0;
}
signed main()
{
//freopen("P7911_13.in","r",stdin);
int T=read();
for(int z=1;z<=T;z++)
{
string op,ad;
cin>>op>>ad;
bool vis=init(ad,z);
if(check(ad)){vis=1;}
if(ip[z].a>255||ip[z].b>255||ip[z].c>255||ip[z].d>255||ip[z].e>65535){vis=1;}
//cout<<z<<":"<<ip[z].a<<" "<<ip[z].b<<" "<<ip[z].c<<" "<<ip[z].d<<" "<<ip[z].e<<endl;
if(op=="Server")
{
ip[z].ok=1;
bool flag1=0;
for(int i=1;i<z;i++)
{
if(ip[i].a==ip[z].a&&ip[i].b==ip[z].b&&ip[i].c==ip[z].c&&ip[i].d==ip[z].d&&ip[i].e==ip[z].e&&ip[i].ok!=0){flag1=1;break;}
}
if(!flag1)
{
if(vis){puts("ERR");}
else{puts("OK");}
}
else{puts("FAIL");}
}
else
{
int flag1=0;
for(int i=1;i<z;i++)
{
if(ip[i].a==ip[z].a&&ip[i].b==ip[z].b&&ip[i].c==ip[z].c&&ip[i].d==ip[z].d&&ip[i].e==ip[z].e&&ip[i].ok!=0){flag1=i;break;}
}
if(vis){puts("ERR");}
else
{
if(flag1>0){print(flag1);pc(1);}
else{puts("FAIL");}
}
}
}
return 0;
}
/*
10
Server 192.168.1.1:80
Client 192.168.1.1:80
Client 192.168.1.1:8080
Server 192.168.1.1:80
Server 192.168.1.1:8080
Server 192.168.1.999:0
Client 192.168.1.1.8080
Client 192.168.1.1:8080
Client 192.168.1.1:80
Client 192.168.1.999:0
*/
17、18WA
13、14、19、20、21RE