#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
char name[30];
int score;
struct node *next;
} lian,*list;
lian pai[9000];
int comp(const void *p1, const void *p2)
{
return ( *(const list)p2).score - (*(const list)p1).score;
}
int main()
{
int n,i,j,d,g,o=0;
char c,s1[30];
scanf("%d",&n);
lian *head,*tail,*p,*q,*t;
memset(pai,0,sizeof(pai));
head=&pai[0];
o++;
head->name[0]='0';
head->score=1<<30;
head->next=NULL;
tail=head;
while(n--)
{
p=&pai[o];
o++;
scanf("%s%d",&p->name,&p->score);
p->next=NULL;
tail->next=p;
tail=p;
}
getchar();
while(scanf("%c",&c))
{
if(c=='A')
{
p=&pai[o];
o++;
scanf("%s%d",&p->name,&p->score);
getchar();
}
else if(c=='Q')
{
scanf("%s",s1);
for(i=0;i<o;i++)
{
if(strcmp(pai[i].name,s1)==0)
{
pai[i].score=-1;
break;
}
}
getchar();
}
else if(c=='C')
{
scanf("%s%d",s1,&d);
for(i=0;i<o;i++)
{
if(strcmp(pai[i].name,s1)==0)
{
pai[i].score+=d;
break;
}
}
getchar();
}
else if(c=='S')
{
qsort(pai,o,sizeof(lian),comp);
for(i=1;i<o;i++)
{
if(pai[i].score==-1)
{
break;
}
printf("%s %d\n",pai[i].name,pai[i].score);
}
i=o;
printf("\n");
getchar();
}
else if(c=='O')
{
qsort(pai,o,sizeof(lian),comp);
for(i=0;i<o;i++)
{
pai[i].next=&pai[i+1];
}
p=&pai[1];
i=0;
printf("#1 : %s",p->name);
i=p->score;
p=p->next;
while(p&&p->score==i)
{
printf(" %s",p->name);
p=p->next;
}
printf("\n");
printf("#2 :");
if(p&&p->score!=-1)
{
printf(" %s",p->name);
p=p->next;
}
if(p&&p->score!=-1)
{
printf(" %s",p->name);
i=p->score;
p=p->next;
}
while(p&&p->score==i&&p->score!=-1)
{
printf(" %s",p->name);
p=p->next;
}
printf("\n");
printf("#3 :");
if(p)
{
j=0;
while(p&&j!=3&&p->score!=-1)
{
printf(" %s",p->name);
i=p->score;
p=p->next;
j++;
}
if(p&&p->score!=-1)
{
while(p->score==i&&p!=NULL)
{
printf(" %s",p->name);
p=p->next;
}
}
}
printf("\n");
break;
}
}
return 0;
}