#include<bits/stdc++.h>
using namespace std;
int n;
string op[1010],ad[1010];
map<string,int> mp;
bool check(string s)
{
int n = s.size();
int num[15] = {};
char zf[15] = {};
int cnt = 1,cntc = 0;
bool flag = 1;
for(int i = 0;i < n;i++)
{
if(isdigit(s[i]))
{
if(s[i] == '0' && !isdigit(s[i+1])) flag = 0;
if(s[i] == '0' && flag) return 0;
else if(s[i] != '0') flag = 0;
num[cnt] = num[cnt] * 10 + (s[i] - '0');
}
else
{
cnt++;
zf[cntc++] = s[i];
flag = 1;
}
}
for(int i = 1;i <= 4;i++)
if(!(0 <= num[i] && num[i] <= 255))
return 0;
if(!(0 <= num[5] && num[5] <= 65535)) return 0;
int len = strlen(zf);
if(len != 4) return 0;
if(zf[0] != '.' || zf[1] != '.' || zf[2] != '.' || zf[3] != ':') return 0;
return 1;
}
int now = 0;
int main()
{
scanf("%d",&n);
for(int i = 1;i <= n;i++)
{
cin >> op[i] >> ad[i];
if(!check(ad[i]))
{
cout << "ERR" << endl;
continue;
}
if(op[i] == "Server")
{
if(mp[ad[i]])
{
cout << "FAIL" << endl;
continue;
}
else
{
mp[ad[i]] = i;
cout << "OK" << endl;
continue;
}
}
else
{
if(mp[ad[i]] == 0)
{
cout << "FAIL" << endl;
continue;
}
else
{
cout << mp[ad[i]] << endl;
continue;
}
}
}
return 0;
}
评测记录qwq