#include <iostream>
#include <vector>
#include <string>
#include <utility>

using namespace std;

int main()
{
    int broj_pacijenata;
    cin >>  broj_pacijenata;

    int zaliheO, zaliheA, zaliheB, zaliheAB;
    cin >> zaliheO >> zaliheA >> zaliheB >> zaliheAB;

    vector < pair < string, int> > potraznja(broj_pacijenata);

    int trazenoO(0), trazenoA(0), trazenoB(0), trazenoAB(0);
    for (int i = 0; i < broj_pacijenata; ++i)
    {
        string x;
        cin >> x;
        potraznja[i].first = x;

        int y;
        cin >> y;
        potraznja[i].second = y;

        if (x == "O") trazenoO += y;
        if (x == "A") trazenoA += y;
        if (x == "B") trazenoB += y;
        if (x == "AB") trazenoAB += y;
    }
///// proveravanje mogucnosti
    int zaliheO1 = zaliheO;
    int zaliheA1 = zaliheA;
    int zaliheB1 = zaliheB;

    if (trazenoO > zaliheO)
    {
        cout << "nemoguce\n";
        return 0;
    }
    else
    zaliheO1 -= trazenoO;

    if (trazenoA <= zaliheA)
    zaliheA1 -= trazenoA;
    else
    if (trazenoA > zaliheA)
    {
        trazenoA -= zaliheA;
        zaliheA1 = 0;

        if (trazenoA <= zaliheO1)
        zaliheO1 -= trazenoA;
        else
        {
        cout << "nemoguce\n";
        return 0;
        }
    }

    if (trazenoB <= zaliheB)
        zaliheB1 -= trazenoB;
    else
    if (trazenoB > zaliheB)
    {
        trazenoB -= zaliheB;
        zaliheB1 = 0;

        if (trazenoB <= zaliheO1)
        zaliheO1 -= trazenoB;
        else
        {
        cout << "nemoguce\n";
        return 0;
        }
    }

    if (trazenoAB > zaliheO1 + zaliheA1 + zaliheB1 + zaliheAB)
    {
        cout << "nemoguce\n";
        return 0;
    }
///// kraj

    vector < vector < int > > pacijenti(broj_pacijenata, vector < int >(4, 0));

    for (int i = 0; i < broj_pacijenata; ++i)
    {
        if (potraznja[i].first == "AB" && potraznja[i].second > 0)
        {
            if (zaliheAB >= potraznja[i].second)
            {
                zaliheAB -= potraznja[i].second;
                pacijenti[i][3] = potraznja[i].second;
                potraznja[i].second = 0;
            }
            else if (zaliheAB < potraznja[i].second)
            {
                pacijenti[i][3] += zaliheAB;
                potraznja[i].second -= zaliheAB;
                break;
            }
        }
    }

    for (int i = 0; i < broj_pacijenata; ++i)
    {
        if (potraznja[i].first == "O" && potraznja[i].second > 0)
        {
            if (zaliheO >= potraznja[i].second)
            {
                zaliheO -= potraznja[i].second;
                pacijenti[i][0] = potraznja[i].second;
                potraznja[i].second = 0;
            }
            else if (zaliheA < potraznja[i].second)
            {
                pacijenti[i][0] += zaliheO;
                potraznja[i].second -= zaliheO;
                break;
            }
        }
    }
    for (int i = 0; i < broj_pacijenata; ++i)
    {
        if (potraznja[i].first == "A" && potraznja[i].second > 0)
        {
            if (zaliheA >= potraznja[i].second)
            {
                zaliheA -= potraznja[i].second;
                pacijenti[i][1] = potraznja[i].second;
                potraznja[i].second = 0;
            }
            else if (zaliheA < potraznja[i].second)
            {
                pacijenti[i][1] += zaliheA;
                potraznja[i].second -= zaliheA;
                break;
            }
        }
    }
    for (int i = 0; i < broj_pacijenata; ++i)
    {
        if (potraznja[i].first == "B" && potraznja[i].second > 0)
        {
            if (zaliheB >= potraznja[i].second)
            {
                zaliheB -= potraznja[i].second;
                pacijenti[i][2] = potraznja[i].second;
                potraznja[i].second = 0;
            }
            else if (zaliheB < potraznja[i].second)
            {
                pacijenti[i][2] += zaliheB;
                potraznja[i].second -= zaliheB;
                break;
            }
        }
    }
    for (int i = 0; i < broj_pacijenata; ++i)
    {
        if (potraznja[i].first == "A" && potraznja[i].second > 0)
        {
            if (zaliheO >= potraznja[i].second)
            {
                zaliheO -= potraznja[i].second;
                pacijenti[i][0] = potraznja[i].second;
                potraznja[i].second = 0;
            }
            else if (zaliheO < potraznja[i].second)
            {
                pacijenti[i][0] += zaliheO;
                potraznja[i].second -= zaliheO;
                break;
            }
        }
    }
    for (int i = 0; i < broj_pacijenata; ++i)
    {
        if (potraznja[i].first == "B" && potraznja[i].second > 0)
        {
            if (zaliheO >= potraznja[i].second)
            {
                zaliheO -= potraznja[i].second;
                pacijenti[i][0] = potraznja[i].second;
                potraznja[i].second = 0;
            }
            else if (zaliheO < potraznja[i].second)
            {
                pacijenti[i][0] += zaliheO;
                potraznja[i].second -= zaliheO;
                break;
            }
        }
    }
    for (int i = 0; i < broj_pacijenata; ++i)
    {
        if (potraznja[i].first == "AB" && potraznja[i].second > 0)
        {
            if (zaliheA >= potraznja[i].second)
            {
                zaliheA -= potraznja[i].second;
                pacijenti[i][1] = potraznja[i].second;
                potraznja[i].second = 0;
            }
            else if (zaliheA < potraznja[i].second)
            {
                pacijenti[i][1] += zaliheA;
                potraznja[i].second -= zaliheA;
                break;
            }
        }
    }
    for (int i = 0; i < broj_pacijenata; ++i)
    {
        if (potraznja[i].first == "AB" && potraznja[i].second > 0)
        {
            if (zaliheB >= potraznja[i].second)
            {
                zaliheB -= potraznja[i].second;
                pacijenti[i][2] = potraznja[i].second;
                potraznja[i].second = 0;
            }
            else if (zaliheB < potraznja[i].second)
            {
                pacijenti[i][2] += zaliheB;
                potraznja[i].second -= zaliheB;
                break;
            }
        }
    }
    for (int i = 0; i < broj_pacijenata; ++i)
    {
        if (potraznja[i].first == "AB" && potraznja[i].second > 0)
        {
            if (zaliheO >= potraznja[i].second)
            {
                zaliheO -= potraznja[i].second;
                pacijenti[i][0] = potraznja[i].second;
                potraznja[i].second = 0;
            }
            else if (zaliheO < potraznja[i].second)
            {
                pacijenti[i][0] += zaliheO;
                potraznja[i].second -= zaliheO;
                break;
            }
        }
    }

    cout << "moguce\n";
    for (int i = 0; i < broj_pacijenata; ++i, cout << '\n')
        for (int j = 0; j < 4; ++j)
        cout << pacijenti[i][j] << " ";
    return 0;
}