#include <bits/stdc++.h>

using namespace std;

int n, o, a, b, ab, o1, a1, b1, ab1;

struct Gas
{
    int grupa;
    int pk;
    int rb;
    int o;
    int a;
    int b;
    int ab;
};

bool Sortiranje(Gas a, Gas b)
{
    return a.grupa <= b.grupa;
}

bool Nafta(Gas a, Gas b)
{
    return a.rb < b.rb;
}

void Izlaz(int s1, int s2, int s3, int s4, Gas& ugalj)
{
    ugalj.o = s1;
    ugalj.a = s2;
    ugalj.b = s3;
    ugalj.ab = s4;
}

int main()
{
    cin >> n >> o >> a >> b >> ab;
    o1 = 0; a1 = 0; b1 = 0; ab1 = 0;
    Gas ugalj[n];
    for(int i = 0; i < n; i++)
    {
        string s;
        cin >> s >> ugalj[i].pk;
        ugalj[i].rb = i;
        ugalj[i].o = 0;
        ugalj[i].a = 0;
        ugalj[i].b = 0;
        ugalj[i].ab = 0;
        if(s == "O")
        {
            ugalj[i].grupa = 0;
            o1 += ugalj[i].pk;
        }
        if(s == "A")
        {
            ugalj[i].grupa = 1;
            a1 +=ugalj[i].pk;
        }
        if(s == "B")
        {
            ugalj[i].grupa = 2;
            b1 +=ugalj[i].pk;
        }
        if(s == "AB")
        {
            ugalj[i].grupa = 3;
            ab1 +=ugalj[i].pk;
        }
    }
    sort(ugalj, ugalj + n, Sortiranje);
    if(o >= o1 && o + a + b + ab >= o1 + a1 + b1 + ab1)
    {
        if(abs(max(a1 - a, 0)) + abs(max(b1 - b, 0)) <= o - o1)
        {
            cout << "moguce\n";
            for(int i = 0; i < n; i++)
            {
                if(ugalj[i].grupa == 0)
                {
                    Izlaz(ugalj[i].pk, 0, 0, 0, ugalj[i]);
                    o -= ugalj[i].pk;
                }
                if(ugalj[i].grupa == 1)
                {
                    if(a < ugalj[i].pk)
                    {
                        Izlaz(ugalj[i].pk - a, a, 0, 0, ugalj[i]);
                        a = 0;
                        o -= (ugalj[i].pk - a);
                    }
                    else
                    {
                        Izlaz(0, ugalj[i].pk, 0, 0, ugalj[i]);
                        a -= ugalj[i].pk;
                    }
                }
                if(ugalj[i].grupa == 2)
                {
                    if(b < ugalj[i].pk)
                    {
                        Izlaz(ugalj[i].pk - b, 0, b, 0, ugalj[i]);
                        b = 0;
                        o -= (ugalj[i].pk - b);
                    }
                    else
                    {
                        Izlaz(0, 0, ugalj[i].pk, 0, ugalj[i]);
                        b -= ugalj[i].pk;
                    }
                }
                if(ugalj[i].grupa == 3)
                {
                    if(ab < ugalj[i].pk)
                    {
                        if(a >= ugalj[i].pk - ab)
                        {
                            Izlaz(0, ugalj[i].pk - ab, 0, ab, ugalj[i]);
                            ab = 0;
                            a -= ugalj[i].pk - ab;
                        }
                        else if(b >= (ugalj[i].pk - ab) - a)
                        {
                            Izlaz(0, a, (ugalj[i].pk - ab) - a, ab, ugalj[i]);
                            a = 0;
                            ab = 0;
                        }
                        else
                        {
                            Izlaz(((ugalj[i].pk - ab) - a) - b, a, ((ugalj[i].pk - ab) - a), ab, ugalj[i]);
                            a = 0;
                            ab = 0;
                            b = 0;
                            o -= (((ugalj[i].pk - ab) - a) - b);
                        }
                    }
                    else
                    {
                        Izlaz(0, 0, 0, ugalj[i].pk, ugalj[i]);
                        ab -= ugalj[i].pk;
                    }
                }
            }
            sort(ugalj, ugalj + n, Nafta);
            for(int i = 0; i < n; i++)
                cout << ugalj[i].o << " " << ugalj[i].a << " " << ugalj[i].b << " "  << ugalj[i].ab << endl;
        }
        else cout << "nemoguce";
    }
    else cout << "nemoguce";
    return 0;
}