#include <iostream>

using namespace std;

struct pacijent
{
    string krvnagrupa;
    int brojdoza;
    int br0, br1, br2, br3;
};

pacijent niz[1000000];

int main()
{
    int n,f;
    int o, a, b, ab;
    char pomocni;
    f = 0;
    cin >> n;
    cin >> o >> a >> b >> ab;

    for (int i = 0; i < n; i++)
    {
        cin >> niz[i].krvnagrupa >> niz[i].brojdoza;
     
        if (niz[i].krvnagrupa=="AB")
        {
            continue;
        }
        pomocni = niz[i].krvnagrupa[0];
        switch(pomocni)
        {
        case 'O':
            if (o >= niz[i].brojdoza)
            {
                o -= niz[i].brojdoza;
                niz[i].br0 = niz[i].brojdoza;
            }
            else
            {
                f = 1;
            }
        case 'A':
            if (a>=niz[i].brojdoza)
            {
                a -= niz[i].brojdoza;
                niz[i].br1 = niz[i].brojdoza;
            }
            else
            {
                niz[i].brojdoza -= a;
                niz[i].br1 = a;
                a = 0;

                if (o >= niz[i].brojdoza)
                {
                    o -= niz[i].brojdoza;
                    niz[i].br0 = niz[i].brojdoza;
                }
                else
                {
                    f = 1;
                }
            }
        case 'B':
            if (b >= niz[i].brojdoza)
            {
                b -= niz[i].brojdoza;
                niz[i].br2 = niz[i].brojdoza;
            }
            else
            {
                niz[i].brojdoza -= b;
                niz[i].br2 = b;
                b = 0;

                if (o >= niz[i].brojdoza)
                {
                    o -= niz[i].brojdoza;
                    niz[i].br0 = niz[i].brojdoza;
                }
                else
                {
                    f = 1;
                }
            }       
        }
    }

    for (int i = 0; i < n; i++)
    {
        if (niz[i].krvnagrupa=="AB")
        {
            if (ab >= niz[i].brojdoza)
            {
                ab -= niz[i].brojdoza;
                niz[i].br3 = niz[i].brojdoza;
            }
            else
            {
                niz[i].brojdoza -= ab;
                niz[i].br3 = ab;
                ab = 0;

                if (a >= niz[i].brojdoza)
                {
                    a -= niz[i].brojdoza;
                    niz[i].br1 = niz[i].brojdoza;
                    niz[i].brojdoza = 0;
                }
                else
                {
                    niz[i].brojdoza -= a;
                    niz[i].br1 = a;
                    a = 0;
                }

                if (b >= niz[i].brojdoza)
                {
                    b -= niz[i].brojdoza;
                    niz[i].br2 = niz[i].brojdoza;
                    niz[i].brojdoza = 0;
                }
                else
                {
                    niz[i].brojdoza -= b;
                    niz[i].br2 = b;
                    b = 0;
                }

                if (o >= niz[i].brojdoza)
                {
                    o -= niz[i].brojdoza;
                    niz[i].br0 = niz[i].brojdoza;
                }
                else
                {
                    f = 1;
                }
            }
        }
    }
    if (f == 1)
    {
        cout << "nemoguce";
        goto ptica;
    }
    cout << "moguce" << endl;
    for (int i = 0; i < n; i++)
    {
        cout << niz[i].br0 << niz[i].br1 << niz[i].br2 << niz[i].br3 << endl;          
    }

    ptica:
    int x = 1;
}