#include <bits/stdc++.h>
using namespace std;
map<string, int> dict;
string host, addr;
int n, cnt = 1;
bool check_num(int num,int len,int lim){
if(num == 0){
if(len != 1) return 0;
return 1;
}
if(lim == 1){
if(num < 0 || num > 255)
return 0;
}
else{
if(num < 0 || num > 65535)
return 0;
}
int l = 0;
while(num){
l++;
num /= 10;
}
return len == l;
}
bool isright(string s){
int cnt = 0;
bool f = 0;
int pos[10];
pos[0] = -1;
for(int i = 0; i < s.size(); i++){
if(s[i] == '.') pos[++cnt] = i;
if(s[i] == ':'){
pos[++cnt] = i;
f = 1;
break;
}
}
if(!f || cnt != 4) return 0;
int num = 0;
int len = 0;
for(int i = 1; i <= 4; i++){
num = 0;
len = 0;
for(int j=pos[i-1]+1;j<=pos[i]-1;j++) num = num * 10 + s[j]-'0';
len = pos[i] - pos[i-1] - 1;
if(!check_num(num, len, 1)) return 0;
}
num = 0;
len = 0;
for(int i = pos[4]+1; i <= s.size()-1; i++){
num = num * 10 + s[i]-'0';
}
len = s.size()-1 - pos[4];
if(!check_num(num, len, 2)) return 0;
return 1;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n;
while(cnt <= n){
cin >> host >> addr;
if(host == "Server"){
if(isright(addr)){
if(!dict[addr]){
cout << "OK" << endl;
dict[addr] = cnt;
}
else cout << "FAIL" << endl;
}
else cout << "ERR" << endl;
}
else{
if(isright(addr)){
if(!dict[addr]) cout << "FAIL" << endl;
else cout << dict[addr] << endl;
}
else cout << "ERR" << endl;
}
cnt++;
}
return 0;
}