#include<iostream>#include<set>#include<map>#include<stdio.h>#include<string.h>using namespace std;enum { SIZ = 104,};struct Node { set<int> tid; char type;};map<int, Node> tab; map<int, Node>::iterator it;set<int> none;bool sameId(set<int> &s, int t){ return (s.empty() || (s.size()==1&&s.find(t)!=s.end()));}bool conflict(Node &o, int tid, char type){ if (sameId(o.tid, tid)){ return false; } else if (type=='S'&&o.type=='S'){ return false; } return true;}void fun(){ char type; int id, tid; tab.clear(); none.clear(); scanf("%c%d%d ", &type, &tid, &id); while(type!= '#'){ if (none.find(tid) != none.end()){ printf("IGNOREDn"); } else { it = tab.find(id); if (it==tab.end()){ Node one; one.tid.insert(tid); one.type = type; tab.insert(make_pair(id, one)); printf("GRANTEDn"); } else if(conflict(it->second, tid, type)){ none.insert(tid); printf("DENIEDn"); } else { if (sameId(it->second.tid, tid) && it->second.type=='S') it->second.type = type; it->second.tid.insert(tid); printf("GRANTEDn"); } } scanf("%c%d%d ", &type, &tid, &id); }}int main(){ int tst; scanf("%d ", &tst); while(tst-- > 0){ fun(); if (tst) printf("n"); } return 0;}