#include<iostream>
#include<sstream>//stringstream头文件
#include<map>//map头文件
typedef long long ll;//也可以不开long long
using namespace std;
bool f(string s){
ll a,b,c,d,e;
if(sscanf(s.c_str(),"%lld.%lld.%lld.%lld:%lld",&a,&b,&c,&d,&e)!=5){//输入的数字不符合要求,不是五个数
return 0;
}
if(a<0||a>255||b<0||b>255||c<0||c>255||d<0||d>255||e<0||e>65535){//输入数据范围不符合要求
return 0;
}
stringstream ss;//stringstream方便进出字符
ss<<a<<'.'<<b<<'.'<<c<<'.'<<d<<':'<<e;//将输入中的数字组合成字符串流
if(ss.str()!=s){//转换成字符串比较
return 0;
}
return 1;
}
map<string,ll>m;//定义了一个用string作为索引,并拥有相关联的指向long long的指针.
ll n;
string op,ad;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>op>>ad;
if(!f(ad)){//不符合要求
cout<<"ERR";
endl(cout);
continue;//还有下一个,所以要continue而非break
}
if(op[0]=='S'){//Server
if(m[ad]){//1or0,所以直接用
cout<<"FAIL";
endl(cout);
}else{
m[ad]=i;
cout<<"OK";
endl(cout);
}
}else{
if(!m.count(ad)){//解释一下count函数: 返回指定元素出现的次数, (但是因为key值不会重复,所以只能是1 or 0)
cout<<"FAIL";//没出现
endl(cout);
}else{
cout<<m[ad];//输出
endl(cout);
}
}
}
return 0;
}
/**************************************************************
Problem: 2403
User: admin
Language: C++
Result: Accepted
Time:689 ms
Memory:2276 kb
****************************************************************/