typedef struct{
	char string[2];
	int jedinica;
}Pacijent;

#include<stdio.h>
#include<string.h>
int main(){
	Pacijent osoba[1000];
	int O,A,B,AB,N,i,j,k=0,Ost,akrv,bkrv;
	char Os[2],As[2],Bs[2],ABs[3];
	scanf("%d",&N);
	scanf("%d %d %d %d",&O,&A,&B,&AB);
	for(i=0;i<N;i++){
		scanf("%s %d",&osoba[i].string,&osoba[i].jedinica);
	} 
	strcpy(Os,"O ");
		strcpy(As,"A ");
		strcpy(Bs,"B ");
		strcpy(ABs,"AB ");
    /* 1 */ for(i=0;i<N;i++){
       		if(strcmp(Os,osoba[i].string)==0 and O>=osoba[i].jedinica){ 
       		printf("%d 0 0 0",osoba[i].jedinica);
       		break;}
			   
		 if(strcmp(Os,osoba[i].string)==0 and O<osoba[i].jedinica) {
			k=k+1;
			break;
			}}
			
/*2*/	  for(i=0;i<N;i++)
       	{
       	 if(strcmp(As,osoba[i].string)==0 and A+O>=osoba[i].jedinica){
				akrv=A-osoba[i].jedinica;
       		 if(akrv<0){
       		 	printf("%d %d 0 0",-akrv,A);
				}
				else printf("0 %d 0 0", osoba[i].jedinica);
				break;
			   }
		 if(strcmp(As,osoba[i].string)==0 and A+O<osoba[i].jedinica){
			k=k+1;
			break;
			}}
	/*3*/ for(i=0;i<N;i++){
       		if(strcmp(Bs,osoba[i].string)==0 and B+O>=osoba[i].jedinica){
       		 bkrv=B-osoba[i].jedinica;
       		 if(bkrv<0){
       		 	printf("%d 0 %d 0",-bkrv,B);
				}
				else printf("0 0 %d 0", osoba[i].jedinica);
				break;
			   }
			else if (strcmp(Bs,osoba[i].string)==0 and B+O<osoba[i].jedinica){
			k=k+1;
			break;
			}}	
	/*4*/ for(i=0;i<N;i++){
       		if(strcmp(ABs,osoba[i].string)==0 and A+O+AB+B>=osoba[i].jedinica){
       	    Ost=A+O+B+AB-osoba[i].jedinica;
       	    if(Ost==0){
       	    	printf("%d %d %d %d",O,A,B,AB);	
       	    	break;
			   }
			   else if(Ost>0){
			   	Ost=A-Ost;
			   	
			   }
		}
			else {
			k=k+1;
			break;
			}}
	return 0;
}