#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
    char grupa[2];
    int kolicina;

}pacijent;

int main()
{
    int i, n, o, a, b, ab, op= 0, ap= 0, bp= 0, abp= 0, jedinicek[4][10000], br=0, abneed[10000];
    pacijent niz[10000];
    scanf("%d", &n);
    scanf("%d %d %d %d", &o, &a, &b, &ab);
    for(int i=0; i<n; i++)
    {
        while(getchar()!='\n');
        scanf("%s %d", &niz[i].grupa, &niz[i].kolicina);
        if(niz[i].grupa[0] == 'O')
            op+= niz[i].kolicina;
        else
        {
            if(niz[i].grupa[0] == 'A' && niz[i].grupa[1] != 'B')
                ap+= niz[i].kolicina;
            else
            {
                if(niz[i].grupa[0] == 'B')
                    bp+= niz[i].kolicina;
                else
                {
                    if(niz[i].grupa[0] == 'A' && niz[i].grupa[1] == 'B')
                        abp+= niz[i].kolicina;
                }
            }
        }
    }
    if( (o-op > 0) && (a-ap+(o-op) >=0) && (b-bp+(o-op+(a-ap)) >=0) && (ab-abp+(o-op+(a-ap)+(b-bp)) >=0))
    {
        for(i=0; i<n; i++)
        {
            if(niz[i].grupa[0] == 'O')
            {
                jedinicek[0][i]= niz[i].kolicina;
                jedinicek[1][i]= 0;
                jedinicek[2][i]= 0;
                jedinicek[3][i]= 0;
                o-= niz[i].kolicina;
            }
            else if(niz[i].grupa[0] == 'A' && niz[i].grupa[1] != 'B')
                {
                    jedinicek[0][i]= 0;
                    jedinicek[2][i]= 0;
                    jedinicek[3][i]= 0;
                    if(a > niz[i].kolicina)
                    {
                        jedinicek[1][i]= niz[i].kolicina;
                        a-= niz[i].kolicina;
                    }
                    else
                    {
                        jedinicek[0][i]= niz[i].kolicina-a;
                        o= o- (niz[i].kolicina-a);
                        jedinicek[1][i]= a;
                        a=0;
                    }
                }
            else if(niz[i].grupa[0] == 'B')
                {
                    jedinicek[0][i]= 0;
                    jedinicek[1][i]= 0;
                    jedinicek[3][i]= 0;
                    if(b > niz[i].kolicina)
                    {
                        jedinicek[2][i]= niz[i].kolicina;
                        b-= niz[i].kolicina;
                    }
                    else
                    {
                        jedinicek[0][i]= niz[i].kolicina - b;
                        o= o- (niz[i].kolicina - b);
                        jedinicek[2][i]= b;
                        b=0;
                    }
                }
            else if(niz[i].grupa[0] == 'A' && niz[i].grupa[1] == 'B')
                {
                    if(ab > niz[i].kolicina)
                    {
                        jedinicek[0][i]= 0;
                        jedinicek[1][i]= 0;
                        jedinicek[2][i]= 0;
                        jedinicek[3][i]= niz[i].kolicina;
                    }
                    else
                    {
                        jedinicek[3][i]= ab;
                        niz[i].kolicina= niz[i].kolicina - ab;
                        ab=0;
                        abneed[br] = i;
                        br++;
                    }
                }
        }
        for(i=0; i<br; i++)
        {
            jedinicek[0][abneed[i]]= (o> niz[abneed[i]].kolicina)?niz[abneed[i]].kolicina:o;
            niz[abneed[i]].kolicina= (o > niz[abneed[i]].kolicina)?0:niz[abneed[i]].kolicina - o;
            jedinicek[1][abneed[i]]= (a> niz[abneed[i]].kolicina)?niz[abneed[i]].kolicina:a;
            niz[abneed[i]].kolicina= (a > niz[abneed[i]].kolicina)?0:niz[abneed[i]].kolicina - a;
            jedinicek[2][abneed[i]]= (b> niz[abneed[i]].kolicina)?niz[abneed[i]].kolicina:b;
            niz[abneed[i]].kolicina= (b > niz[abneed[i]].kolicina)?0:niz[abneed[i]].kolicina - b;
            if(i != 0) jedinicek[3][abneed[i]]= 0;

        o= (o> niz[abneed[i]].kolicina)?o-niz[abneed[i]].kolicina:o;
        a= (a> niz[abneed[i]].kolicina)?a-niz[abneed[i]].kolicina:a;
        b= (b> niz[abneed[i]].kolicina)?b-niz[abneed[i]].kolicina:b;
        }
        printf("moguce \n");
        for(i=0; i<n-1; i++)
        {
            printf("%d %d %d %d \n", jedinicek[0][i], jedinicek[1][i], jedinicek[2][i], jedinicek[3][i]);
        }
        printf("%d %d %d %d \n", jedinicek[0][n-1], jedinicek[1][n-1], jedinicek[2][n-1], jedinicek[3][n-1]);
    }
    else
    {
        printf("nemoguce");
    }

    return 0;
}