#include <iostream>
#include <map>

using namespace std;

bool checkIfPossible(int potraznja[], int zalihe[]){
    if(zalihe[0] < potraznja[0]) return false;
    zalihe[0] -= potraznja[0];

    if(zalihe[1] + zalihe[0] < potraznja[1]) return false;
    zalihe[1] -= potraznja[1];
    if(zalihe[1] < 0) {
        zalihe[0] += zalihe[1];
        zalihe[1] = 0;
    }

    if(zalihe[2] + zalihe[0] < potraznja[2]) return false;
    zalihe[2] -= potraznja[2];
    if(zalihe[2] < 0) {
        zalihe[0] += zalihe[2];
        zalihe[2] = 0;
    }

    if(zalihe[3] + zalihe[2] + zalihe[1] + zalihe[0] < potraznja[3]) return false;
    return true;
}

int main()
{
    int N, O, A, B, AB;
    int pacijenti[N][2] = {};
    int potraznja[4], zalihe[4];
    potraznja[0] = 0;
    potraznja[1] = 0;
    potraznja[2] = 0;
    potraznja[3] = 0;
    map<string, int> krvneGrupe = {make_pair("O", 0), make_pair("A", 1), make_pair("B", 2), make_pair("AB", 3)};

    cin >> N >> O >> A >> B >> AB;

    zalihe[0] = O;
    zalihe[1] = A;
    zalihe[2] = B;
    zalihe[3] = AB;

    for (int i = 0; i < N; i++){
        string krvnaGrupa;
        int krv;
        cin >> krvnaGrupa >> krv;
        pacijenti[i][0] = krvneGrupe.at(krvnaGrupa);
        pacijenti[i][1] = krv;
        potraznja[krvneGrupe.at(krvnaGrupa)] += krv;
    }

    if(checkIfPossible(potraznja, zalihe)){
        cout << "moguce" << endl;
        for(int i = 0; i < N; i++) {
            switch(pacijenti[i][0]){
            case 0:
                cout << pacijenti[i][1] << " 0 0 0" << endl;
                break;
            case 1:
                {
                int At = min(pacijenti[i][1], A);
                A -= pacijenti[i][1];
                int Ot = 0;
                if(A < 0) {
                    Ot -= A;
                    A = 0;
                }
                cout << Ot << " " << At << " 0 0" << endl;
                break;
                }
            case 2:
                {
                int Bt = min(pacijenti[i][1], B);
                B -= pacijenti[i][1];
                int Ot = 0;
                if(B < 0) {
                    Ot -= B;
                    B = 0;
                }
                cout << Ot << " 0 " << Bt << " 0" << endl;
                break;
                }
            case 3:
                {
                int ABt = min(pacijenti[i][1], zalihe[3]);
                zalihe[3] -= pacijenti[i][1];

                int Bt = 0;
                if(zalihe[3] < 0 && zalihe[2] >= -zalihe[3]) {
                    Bt -= zalihe[3];
                    zalihe[2] += zalihe[3];
                    zalihe[3] = 0;
                }

                int At = 0;
                if(zalihe[2] < 0 && zalihe[1] >= -zalihe[2]) {
                    At -= zalihe[2];
                    zalihe[1] += zalihe[2];
                    zalihe[2] = 0;
                }

                int Ot = 0;
                if(zalihe[1] < 0) {
                    Ot -= zalihe[1];
                    zalihe[1] = 0;
                }

                cout << Ot << " " << At << " " << Bt << " " << ABt << endl;
                break;
                }
            }
        }
    }
    else cout << "nemoguce";
}