#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class Pacijent
{
public: int grupa;
      int potrebno;
      vector<int> primljeno;
      int pocetnoi;

public:
    Pacijent(string c, int p, int i)
    {
        potrebno = p;
        grupa = c == "O" ? 0 : c == "A" ? 1 : c == "B" ? 2 : 3;
        primljeno.resize(4);
        pocetnoi = i;
    }

    int Daj(int dato, int gr)
    {
        primljeno[gr] += potrebno;
        int r = dato - potrebno;
        potrebno -= dato;
        potrebno = potrebno < 0 ? 0 : potrebno;
        primljeno[gr] -= potrebno;
        return r;
    }
};


bool bul;
bool operator<(Pacijent& c1, Pacijent& c2) { 
    if (!bul) {
        return c1.grupa < c2.grupa;
    }
    else {
        return c1.pocetnoi < c2.pocetnoi;
    }

}

using namespace std;
int main()
{
    bul = false;
    int N;
    cin >> N;
    vector<int> zalihe;
    zalihe.resize(4);
    cin >> zalihe[0] >> zalihe[1] >> zalihe[2] >> zalihe[3]; //O, A, B, AB

    vector<Pacijent> pacijenti;
    for (int i = 0; i < N; i++)
    {
        string g;
        int p;
        cin >> g >> p;
        pacijenti.push_back(*new Pacijent(g, p, i));
    }
    sort(pacijenti.begin(), pacijenti.end());


    for (int i = 0; i < N; i++)
    {
        if (pacijenti[i].grupa == 0)
        {
            zalihe[0] = pacijenti[i].Daj(zalihe[0], 0);
            if (zalihe[0] < 0)
            {
                std::cout << "nemoguce";
                return 0;
            }
            continue;
        }

        if (pacijenti[i].grupa == 1)
        {
            zalihe[1] = pacijenti[i].Daj(zalihe[1], 1);
            if (zalihe[1] < 0)
            {
                zalihe[1] = 0;
                zalihe[0] = pacijenti[i].Daj(zalihe[0], 0);

                if (zalihe[0] < 0)
                {
                    std::cout << "nemoguce";
                    return 0;
                }
            }
            continue;
        }

        if (pacijenti[i].grupa == 2)
        {
            zalihe[2] = pacijenti[i].Daj(zalihe[2], 2);
            if (zalihe[2] < 0)
            {
                zalihe[2] = 0;
                zalihe[0] = pacijenti[i].Daj(zalihe[0], 0);

                if (zalihe[0] < 0)
                {
                    std::cout << "nemoguce";
                    return 0;
                }
            }
            continue;
        }

        if (pacijenti[i].grupa == 3)
        {
            pacijenti[i].Daj(zalihe[0], 0);

            if(pacijenti[i].potrebno > 0)
                pacijenti[i].Daj(zalihe[1], 1);

            if (pacijenti[i].potrebno > 0)
                pacijenti[i].Daj(zalihe[2], 2);

            if (pacijenti[i].potrebno > 0)
                pacijenti[i].Daj(zalihe[3], 3);

            if (pacijenti[i].potrebno > 0)
            {
                std::cout << "nemoguce";
                return 0;
            }
        }
    }
    bul = true;
    std::cout << "moguce" << endl;
    sort(pacijenti.begin(), pacijenti.end());
    for (Pacijent p : pacijenti)
        std::cout << p.primljeno[0] << " " << p.primljeno[1] << " " << p.primljeno[2] << " " << p.primljeno[3] << " " << endl;

    return 0;
}