#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>


int zaliheKrvi[4];
char str[10000]={"Moguce\n"};

void raspodeli(char *temp)
{
char broj[10000],tempBroj[10000],tempBroj1[10000];
int i=0,j=0,x;

int A=zaliheKrvi[0];
int B=zaliheKrvi[1];
int AB=zaliheKrvi[2];
int O=zaliheKrvi[3];

if(strstr(temp,"A "))
{
    while(temp[i]!='\0')
    {
        if(temp[i] >= '0' && temp[i] <= '9')
        {
            broj[j]=temp[i];
            j++;
        }
        i++;
    }
    x=atoi(broj);
    i=0;j=0;

    if(A+O>=x)
    {
        if(A>=x)
        {
            A-=x;
            sprintf(tempBroj, "%d", x);
            strcat(tempBroj," \n");
            strcat(str,tempBroj);
        }
        else
        {
            x-=A;
            sprintf(tempBroj, "%d", A);
            A=0;
            O-=x;
            sprintf(tempBroj1, "%d", x);
            strcat(tempBroj," 0  ");
            strcat(tempBroj,tempBroj1);
            strcat(tempBroj," \n");
            strcat(str,tempBroj);  
        }
    }
    else
    {
        strcat(str,"Nemoguce"); 
    }
}

else if(strstr(temp,"B "))
{
    while(temp[i]!='\0')
    {
        if(temp[i] >= '0' && temp[i] <= '9')
        {
            broj[j]=temp[i];
            j++;
        }
        i++;
    }
    x=atoi(broj);
    i=0;j=0;

    if(B+O>=x)
    {
        if(B>=x)
        {
            B-=x;
            char pomocni[50]="0 ";
            sprintf(tempBroj, "%d", x);
            strcat(pomocni,tempBroj);
            strcat(pomocni," \n");
            strcat(str,pomocni);
            
        }
        else
        {
            char pomocni[50]="0 ";
            x-=B;
            sprintf(tempBroj, "%d", B);
            B=0;
            O-=x;
            sprintf(tempBroj1, "%d", x);
            strcat(pomocni,tempBroj);
            strcat(pomocni,"0 ");
            strcat(pomocni,tempBroj1);
            strcat(pomocni," \n");
            strcat(str,pomocni);
        }
    }
    else
    {
        strcat(str,"Nemoguce");
    }
}

else if(strstr(temp,"AB "))
{
    while(temp[i]!='\0')
    {
        if(temp[i] >= '0' && temp[i] <= '9')
        {
            broj[j]=temp[i];
            j++;
        }
        i++;
    }
    x=atoi(broj);
    i=0;j=0;

    if(A+AB+B+O>x)
    {
        if(AB>=x)
        {
            char pomocni[10000]="0  ";
            AB-=x;
            sprintf(tempBroj, "%d", x);
            strcat(pomocni,tempBroj);
            strcat(pomocni,"  \n");
            strcat(str,pomocni);
        }
        else
        {
            char pomocni[10000]="0";
            x-=AB;
            sprintf(tempBroj,"%d",AB);
            AB=0;
            A=0;
            B=0;
            O-=x;
            sprintf(tempBroj1,"%d",x);
            strcat(pomocni,tempBroj);
            strcat(pomocni,"0");
            strcat(pomocni,tempBroj1);
            strcat(pomocni,"\n");
            strcat(str,pomocni);
        }
    }
    else
    {
        strcat(str,"Nemoguce");
    }
}
else if(strstr(temp,"O "))
{
    while(temp[i]!='\0')
    {
        if(temp[i] >= '0' && temp[i] <= '9')
        {
            broj[j]=temp[i];
            j++;
        }
        i++;
    }
    x=atoi(broj);
    i=0;j=0;

    if(O+O>=x)
    {
    	if(O>=x)
    	{
    		O-=x;
    		char pomocni[10000]="0 ";
    		sprintf(tempBroj,"%d",x);
    		strcat(pomocni,tempBroj);
    		strcat(pomocni," \n");
    		strcat(str,pomocni);
		}
		
		else
		{
			char pomocni[10000]="0 ";
			x-=O;
			sprintf(tempBroj,"%d",O);
			O=0;
			O-=x;
			sprintf(tempBroj1,"%d",x);
			strcat(pomocni,tempBroj);
			strcat(pomocni,"0 ");
			strcat(pomocni,tempBroj1);
			strcat(pomocni, " \n ");
			strcat(str,pomocni);
		}
	}
	else
	{
		strcat(str,"Nemoguce");
	}	
	
}

zaliheKrvi[0]=A;
zaliheKrvi[1]=B;
zaliheKrvi[2]=AB;
zaliheKrvi[3]=O;

}

bool ogranicenje(int brojPacijenata, int sumaZaliha, int sumaTrazeneKrvi)
{
    if(brojPacijenata>=0 && brojPacijenata<=10000)
    {
        if(1000000>=sumaZaliha && 1000000>=sumaTrazeneKrvi)
        {
            return true;
        }
        else
            return false;
    }
    else
        return false;
}

int trazenaKrv(char *temp)
{
int i=0,j=0,x;
char broj[10000];
    while(temp[i]!='\0')
    {
        if(temp[i] >= '0' && temp[i] <= '9')
        {
            broj[j]=temp[i];
            j++;
        }
        i++;
    }
    x=atoi(broj);
    return x;
}

int main()
{
int brojPacijenata,sumaZaliha=0,sumaTrazeneKrvi=0;
char temp[10];
int A,B,AB,O;

scanf("%d",&brojPacijenata);
scanf("%d %d %d %d",&O,&A,&B,&AB);

sumaZaliha=zaliheKrvi[0]+zaliheKrvi[1]+zaliheKrvi[2]+zaliheKrvi[3];

gets(temp);

for(int i=0;brojPacijenata>i;i++)
{
     printf("%d  ", i+1);
     gets(temp);
     sumaTrazeneKrvi+=trazenaKrv(temp);
     raspodeli(temp);
}
if(ogranicenje(brojPacijenata,sumaZaliha,sumaTrazeneKrvi)==false)
   {
       return  0;
   }

if(strstr(str,"Nemoguce"))
    printf("Nemoguce");
else
    printf("%s",str);

return 0;
}