#include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> using namespace std; typedef struct person { int number,solve,issub; int time[15],totaltime; } person; int main() { /*freopen("in.txt","r",stdin);*/ int cas; person p[110]; scanf("%d\n",&cas); while(cas--) { for(int i=0; i<110; i++) { for(int j=0; j<15; j++) p[i].time[j]=0; p[i].solve=0; p[i].issub=0; } int a,b,c; char ch; char str[50]; while(fgets(str,50,stdin)!=NULL) { if(str[0]=='\n') break; int num=0,i; for(i=0; str[i]!='\0'&&str[i]!=' '; i++) { if(str[i]>='0'&&str[i]<='9') num=num*10+str[i]-'0'; } a=num; num=0; for(i++; str[i]!='\0'&&str[i]!=' '; i++) { if(str[i]>='0'&&str[i]<='9') num=num*10+str[i]-'0'; } b=num; num=0; for(i++; str[i]!='\0'&&str[i]!=' '; i++) { if(str[i]>='0'&&str[i]<='9') num=num*10+str[i]-'0'; } c=num; ch=str[i+1]; p[a].issub=1; if(ch=='C') { if(p[a].time[b]==0) { p[a].solve++; p[a].time[b]+=c; } else if(p[a].time[b]<0) { p[a].solve++; p[a].time[b]=p[a].time[b]*-1+c; } } else if(ch=='I') { if(p[a].time[b]<=0) p[a].time[b]-=20; } } for(int i=0; i<110; i++) { p[i].number=i; p[i].totaltime=0; for(int j=0; j<15; j++) { if(p[i].time[j]>0) p[i].totaltime+=p[i].time[j]; } } for(int i=0; i<110; i++) { for(int j=i+1; j<110; j++) { if(p[i].solve<p[j].solve) { person temp; temp=p[i]; p[i]=p[j]; p[j]=temp; } else if(p[i].solve==p[j].solve) { if(p[i].totaltime>p[j].totaltime) { person temp; temp=p[i]; p[i]=p[j]; p[j]=temp; } } } } for(int i=0; i<110; i++) if(p[i].issub==1) printf("%d %d %d\n",p[i].number,p[i].solve,p[i].totaltime); if(cas) putchar('\n'); } return 0; }