#include <bits/stdc++.h>
using namespace std;
int n;
string op,s;
char cmp[8]={'2','5','5'},cmp2[8]={'6','5','5','3','5'};
map<string,int> mp;
map<string,int> mp2;
int scnt;
void print(){
printf("ERR\n");
}
bool check(int l,int r){
if(l>r) return false;
if(s[l]=='0'&&l!=r) return false;
if(r-l+1<3) return true;
if(r-l+1>3) return false;
for(int i=l,j=0;i<=r;i++,j++){
if(s[i]>cmp[j]) return false;
if(s[i]<cmp[j]) return true;
}
return true;
}
bool check2(int l,int r){
if(l>r) return false;
if(s[l]=='0'&&l!=r) return false;
if(r-l+1<5) return true;
if(r-l+1>5) return false;
for(int i=l,j=0;i<=r;i++,j++){
if(s[i]>cmp2[j]) return false;
if(s[i]<cmp2[j]) return true;
}
return true;
}
int main(){
cin>>n;
while(n--){
cin>>op>>s;
scnt++;
bool flag=true;
int p[5],cnt=1;
int sz=s.size();
for(int i=0;i<sz;i++){
if(cnt<=3){
if(s[i]<'0'||s[i]>'9'){
if(s[i]=='.'){
p[cnt]=i;
cnt++;
}
else{
flag=false;
break;
}
}
}
else if(cnt==4){
if(s[i]<'0'||s[i]>'9'){
if(s[i]==':'){
p[cnt]=i;
cnt++;
}
else{
flag=false;
break;
}
}
}
else{
if(s[i]<'0'||s[i]>'9'){
flag=false;
break;
}
}
}
if(flag==false){
print();
continue;
}
if(check(0,p[1]-1)&&check(p[1]+1,p[2]-1)&&check(p[2]+1,p[3]-1)
&&check(p[3]+1,p[4]-1)&&check2(p[4]+1,sz-1)){
if(op[0]=='S'){
if(mp2[s]==0){
mp2[s]=scnt;
printf("OK\n");
}
else printf("FAIL\n");
}
else{
if(mp[s]==1){
printf("FAIL\n");
}
else if(mp2[s]==0){
printf("FAIL\n");
}
else printf("%d\n",mp2[s]);
}
}
else{
print();
continue;
}
}
}