#include <iostream>

using namespace std;
typedef struct{
    char grupa[1];
    int potrebno;
}Pacijent;
typedef struct{
    int O1=0,A1=0,B1=0,AB1=0;
}Korist;

int main()
{
    int O,A,B,AB;
    int n;
    cin>>n;
    Pacijent a[n];
    cin>>O>>A>>B>>AB;
    for(int i=0;i<n;i++)
        {
            cin>>a[i].grupa[0]>>a[i].potrebno;
        }
    int bro=0;
    int bra=0;
    int brb=0;
    int brba=0;
    int mestoO[n];
    int mestoA[n];
    int mestoB[n];
    int mestoAB[n];
    for(int i=0;i<n;i++)
    {
        if(a[i].grupa[0]=='O')
            mestoO[bro++]=i;
        else if(a[i].grupa[0]=='A')
            mestoA[bra++]=i;
        else if(a[i].grupa[0]=='B')
            mestoB[brb++]=i;
        else
            mestoAB[brba++]=i;
    }
    Korist b[n];
    for(int i=0;i<n;i++)
    {
     for(int j=0;j<bro;j++)
            {
                if(a[mestoO[j]].potrebno<O)
                {
                    b[mestoO[j]].O1=a[mestoO[j]].potrebno;
                    O-=a[mestoO[j]].potrebno;
                }
            else
                n=0;
            }

    for(int j=0;j<bra;j++)
            {
            if(a[mestoA[j]].potrebno<A+O)
                {
                    if(A<a[mestoA[j]].potrebno)
                        {
                            b[mestoO[j]].A1=A;
                            a[mestoO[j]].potrebno-=A;
                            b[mestoO[j]].O1=a[mestoO[j]].potrebno;
                        }
                    else
                    {
                        b[mestoO[j]].A1=a[mestoO[j]].potrebno;
                    }
                }
            else
                n=0;
        }
        for(int j=0;j<brb;j++)
            {
            if(a[mestoB[j]].potrebno<B+O)
                {
                    if(B<a[mestoB[j]].potrebno)
                        {
                            b[mestoO[j]].B1=B;
                            a[mestoO[j]].potrebno-=B;
                            b[mestoO[j]].O1=a[mestoO[j]].potrebno;
                        }
                    else
                    {
                        b[mestoO[j]].B1=a[mestoO[j]].potrebno;
                    }
                }
            else
                n=0;
        }
        for(int j=0;j<brba;j++)
            {
            if(a[mestoAB[j]].potrebno<A+O+B+AB)
                {
                    if(AB<a[mestoA[j]].potrebno)
                        {
                            b[mestoO[j]].AB1=AB;
                            a[mestoO[j]].potrebno-=AB;
                                if(A<a[mestoA[j]].potrebno)
                                {
                                    b[mestoO[j]].A1=A;
                                    a[mestoO[j]].potrebno-=A;
                                    if(B<a[mestoA[j]].potrebno)
                                        {
                                        b[mestoO[j]].B1=B;
                                        a[mestoO[j]].potrebno-=B;
                                        b[mestoO[j]].O1=O;
                                        }
                                    else
                                       b[mestoO[j]].B1=a[mestoO[j]].potrebno;
                                }
                                else
                                    b[mestoO[j]].A1=a[mestoO[j]].potrebno;


                        }
                    else
                    {
                        b[mestoO[j]].AB1=a[mestoO[j]].potrebno;
                    }
                }
            else
                n=0;
        }

    }
    if(n>0)
    {
        cout<<"moguce"<<endl;
        for(int i=0;i<n;i++)
            cout<<b[i].O1<<b[i].A1<<b[i].B1<<b[i].AB1;
    }
    else
        cout<<"nemoguce"<<endl;
    return 0;
}