#include <stdio.h>
#include <stdlib.h>
typedef struct pacijent
{
    int kg;//0=o,1=a,b=2,ab=3
    int n;
    int o;
    int a;
    int b;
    int ab;
};
int main()
{
    int n,o,a,b,ab;
    struct pacijent* p;
    scanf("%d",&n);
    scanf("%d %d %d %d",&o,&a,&b,&ab);
    p=malloc(sizeof(struct pacijent)*n);
    char* str=malloc(4);
    for(int c=0;c<n;c++)
    {
        scanf("%3s %d",str,&p[c].n);
        if(str[0]=='O')p[c].kg=0;
        else if(str[0]=='B')p[c].kg=2;
        else if(str[0]=='A')
        {
            if(str[1]=='B')p[c].kg=3;
            else p[c].kg=1;
        }
        p[c].o=0;
        p[c].a=0;
        p[c].b=0;
        p[c].ab=0;
    }
    for(int c=0;c<n;c++)
    {
        switch(p[c].kg)
        {
            case 0:
            {
                if(p[c].n>o)goto nemoguce;
                else
                {
                    o-=p[c].n;
                    p[c].o=p[c].n;
                }
                break;
            }
            case 1:
            {
                if(p[c].n<=a)
                {
                    a-=p[c].n;
                    p[c].a=p[c].n;
                    p[c].n=p[c].a;
                }
                else
                {
                    p[c].n-=a;
                    p[c].a=a;
                    a=0;
                    if(p[c].n>o)goto nemoguce;
                    else
                    {
                        o-=p[c].n;
                        p[c].o=p[c].n;
                    }
                }
                break;
            }
            case 2:
            {
                if(p[c].n<=b)
                {
                    b-=p[c].n;
                    p[c].b=p[c].n;
                    p[c].n=p[c].b;
                }
                else
                {
                    p[c].n-=b;
                    p[c].b=b;
                    b=0;
                    if(p[c].n>o)goto nemoguce;
                    else
                    {
                        o-=p[c].n;
                        p[c].o=p[c].n;
                    }
                }
                break;
            }
            case 3:
            {
                if(p[c].n<=a)
                {
                    a-=p[c].n;
                    p[c].a=p[c].n;
                    p[c].n=p[c].a;
                }
                else
                {
                    if(p[c].n<=b)
                    {
                        b-=p[c].n;
                        p[c].b=p[c].n;
                        p[c].n=p[c].b;
                    }
                    else
                    {
                        p[c].n-=b;
                        p[c].b=b;
                        b=0;
                        p[c].n-=a;
                        if(p[c].n<=ab)
                        {
                            ab-=p[c].n;
                            p[c].ab=p[c].n;
                            p[c].n=p[c].ab;
                        }
                        else
                        {
                            p[c].n-=ab;
                            p[c].ab=ab;
                            b=0;
                            if(p[c].n>o)goto nemoguce;
                            else
                            {
                                o-=p[c].n;
                                p[c].o=p[c].n;
                            }
                        }
                    }
                }
                break;
            }

        }
    }
    printf("moguce\n");
    for(int c=0;c<n;c++)
    {
        printf("%d %d %d %d\n",p[c].o,p[c].a,p[c].b,p[c].ab);
    }
    return 0;
    nemoguce:
    printf("nemoguce");
    return 0;
}