#include <iostream>
#include <string>
using namespace std;

int main()
{
    int n,o,a,b,ab;

    cin >> n >> o >> a >> b >> ab;
    string kgA = "A";
    string kgB = "B";
    string kgAB = "AB";
    string kgO = "O";
    string krvnaGrupa[n];
    int brojJedinica[n];
    int brojDostupnihJedinica = o + a + b + ab;
    int brojDostupnihJedinicaO = o;
    int brojDostupnihJedinicaA = a;
    int brojDostupnihJedinicaB = b;
    int brojDostupnihJedinicaAB = ab;
    int potrebanBrojJedinicaUkupno = 0;
    int potrebanBrojJedinicaO = 0;
    int potrebanBrojJedinicaA = 0;
    int potrebanBrojJedinicaB = 0;
    int potrebanBrojJedinicaAB = 0;

    for(int i = 0; i<n; ++i) {
        cin >> krvnaGrupa[i];
        cin >> brojJedinica[i];
    }

    for (int j=0; j<n; ++j) {
        if (krvnaGrupa[j] == kgO) {
             potrebanBrojJedinicaO += brojJedinica[j];
        }
        if (krvnaGrupa[j] == kgA) {
             potrebanBrojJedinicaA += brojJedinica[j];
        }

        if (krvnaGrupa[j] == kgB) {
             potrebanBrojJedinicaB += brojJedinica[j];
        }
        if (krvnaGrupa[j] == kgAB) {
             potrebanBrojJedinicaAB += brojJedinica[j];
        }

        potrebanBrojJedinicaUkupno += brojJedinica[j];

    }

    int visakJedinicaO = brojDostupnihJedinicaO - potrebanBrojJedinicaO;
    int visakJedinicaA = brojDostupnihJedinicaA - potrebanBrojJedinicaA;
    int visakJedinicaB = brojDostupnihJedinicaB - potrebanBrojJedinicaB;
    int visakJedinicaAB = brojDostupnihJedinicaAB - potrebanBrojJedinicaAB;

    if ((potrebanBrojJedinicaUkupno > brojDostupnihJedinica)
     || (potrebanBrojJedinicaO > brojDostupnihJedinicaO)
     || ((potrebanBrojJedinicaO + potrebanBrojJedinicaA + potrebanBrojJedinicaB) > (brojDostupnihJedinicaO + brojDostupnihJedinicaA + brojDostupnihJedinicaB))
     || (visakJedinicaA < 0 && visakJedinicaA + visakJedinicaO < 0)
     || (visakJedinicaB < 0 && visakJedinicaB + visakJedinicaO < 0)
     || (visakJedinicaA < 0 && visakJedinicaB < 0 && ((visakJedinicaA + visakJedinicaB + visakJedinicaO) < 0))
    ) {
        cout << "nemoguce" << endl;
    } else if (potrebanBrojJedinicaO <= brojDostupnihJedinicaO
            &&  potrebanBrojJedinicaAB <= brojDostupnihJedinicaAB
            &&  potrebanBrojJedinicaA <= brojDostupnihJedinicaA
            &&  potrebanBrojJedinicaB <= brojDostupnihJedinicaB) {
        cout << "moguce" << endl;
        for(int i = 0; i<n; ++i) {
            if (krvnaGrupa[i] == kgO) {
                cout << brojJedinica[i] << " " << 0 << " " << 0 << " " << 0 << endl;
            }

            if (krvnaGrupa[i] == kgA) {
                cout << 0 << " " << brojJedinica[i] << " " << 0 << " " << 0 << endl;
            }

            if (krvnaGrupa[i] == kgB) {
                cout << 0 << " " << 0 << " " << brojJedinica[i] << " " << 0 << endl;
            }

            if (krvnaGrupa[i] == kgAB) {
                cout << 0 << " " << 0 << " " << 0 << " " << brojJedinica[i] << endl;
            }
        }
    } else {
        int preostaliBrojJedinicaO = brojDostupnihJedinicaO;
        int preostaliBrojJedinicaA = brojDostupnihJedinicaA;
        int preostaliBrojJedinicaB = brojDostupnihJedinicaB;
        int preostaliBrojJedinicaAB = brojDostupnihJedinicaAB;

        string pacijent[n];
        for (int i=0; i<n; ++i) {
            int brojJedinicaO = 0;
            int brojJedinicaA = 0;
            int brojJedinicaB = 0;
            int brojJedinicaAB = 0;
            if (krvnaGrupa[i] == kgO) {
                if (brojJedinica[i] <= preostaliBrojJedinicaO) {
                    brojJedinicaO = brojJedinica[i];
                    pacijent[i] = to_string(brojJedinicaO) + " " + to_string(brojJedinicaA) + " " + to_string(brojJedinicaB)  + " " + to_string(brojJedinicaAB);
                    preostaliBrojJedinicaO -= brojJedinica[i];
                } else {
                    cout << "nemoguce" << endl; break;
                }
            }

            if (krvnaGrupa[i] == kgA) {
                if (brojJedinica[i] <= preostaliBrojJedinicaA) {
                    brojJedinicaA = brojJedinica[i];
                    pacijent[i] = to_string(brojJedinicaO) + " " + to_string(brojJedinicaA) + " "  + to_string(brojJedinicaB)  + " " + to_string(brojJedinicaAB);
                    preostaliBrojJedinicaA -= brojJedinicaA;
                } else if (visakJedinicaO >= (brojJedinica[i] - preostaliBrojJedinicaA)) {
                    brojJedinicaO = (brojJedinica[i] - preostaliBrojJedinicaA);
                    brojJedinicaA = preostaliBrojJedinicaA;
                    pacijent[i]= std::to_string(brojJedinicaO) + " " + to_string(brojJedinicaA) + " "  + to_string(brojJedinicaB)  + " " + to_string(brojJedinicaAB);
                    preostaliBrojJedinicaO -= brojJedinicaO;
                    // visakJedinicaO -= brojJedinicaO;
                    preostaliBrojJedinicaA = 0;
                } else {
                    cout << "nemoguce" << endl; break;
                }
            }

            if (krvnaGrupa[i] == kgB) {
                if (brojJedinica[i] <= preostaliBrojJedinicaB) {
                    brojJedinicaB = brojJedinica[i];
                    pacijent[i] = to_string(brojJedinicaO) + " " + to_string(brojJedinicaA)  + " " + to_string(brojJedinicaB) + " " + to_string(brojJedinicaAB);
                    preostaliBrojJedinicaB -= brojJedinica[i];
                } else if (visakJedinicaO >= (brojJedinica[i] - preostaliBrojJedinicaB)) {
                    brojJedinicaO = (brojJedinica[i] - preostaliBrojJedinicaB);
                    brojJedinicaB = preostaliBrojJedinicaB;
                    pacijent[i] = to_string(brojJedinicaO)  + " " + to_string(brojJedinicaA) + " " + to_string(brojJedinicaB)  + " " + to_string(brojJedinicaAB);
                    preostaliBrojJedinicaO -= (brojJedinica[i] - preostaliBrojJedinicaB);
                    // visakJedinicaO -= brojJedinicaO;
                    preostaliBrojJedinicaB = 0;
                } else {
                    cout << "nemoguce" << endl;break;
                }
            }

            if (krvnaGrupa[i] == kgAB) {
                if (brojJedinica[i] <= preostaliBrojJedinicaAB) {
                    brojJedinicaAB = brojJedinica[i];
                    pacijent[i] = to_string(brojJedinicaO) + " " + to_string(brojJedinicaA) + " " + to_string(brojJedinicaB) + " " + to_string(brojJedinicaAB);
                    preostaliBrojJedinicaAB -= brojJedinica[i];
                } else if ((visakJedinicaA > 0 || visakJedinicaB > 0 || visakJedinicaO > 0) && (visakJedinicaA + visakJedinicaB + visakJedinicaO >= (-visakJedinicaAB))) {
                    brojJedinicaAB = preostaliBrojJedinicaAB;
                    if (visakJedinicaA >=  (brojJedinica[i] - preostaliBrojJedinicaAB)) {
                        brojJedinicaA = brojJedinica[i] - preostaliBrojJedinicaAB;
                        pacijent[i] = to_string(brojJedinicaO) + " " + to_string(brojJedinicaA) + " " + to_string(brojJedinicaB) + " " + to_string(brojJedinicaAB);
                        preostaliBrojJedinicaA -=brojJedinicaA;
                        preostaliBrojJedinicaAB = 0;
                    } else if (visakJedinicaB >=  (brojJedinica[i] - preostaliBrojJedinicaAB)) {
                        brojJedinicaB = brojJedinica[i] - preostaliBrojJedinicaAB;
                        pacijent[i] = to_string(brojJedinicaO) + " " + to_string(brojJedinicaA) + " " + to_string(brojJedinicaB) + " " + to_string(brojJedinicaAB);
                        preostaliBrojJedinicaB -=brojJedinicaB;
                        preostaliBrojJedinicaAB = 0;
                    } else if (visakJedinicaA > 0 && visakJedinicaB > 0 && ((visakJedinicaA + visakJedinicaB) >= (brojJedinica[i] - preostaliBrojJedinicaAB))) {
                        brojJedinicaA = visakJedinicaA;
                        brojJedinicaB = brojJedinica[i] - preostaliBrojJedinicaAB - brojJedinicaA;
                        pacijent[i] = to_string(brojJedinicaO) + " " + to_string(brojJedinicaA) + " " + to_string(brojJedinicaB) + " " + to_string(brojJedinicaAB);
                        preostaliBrojJedinicaA = 0;
                        preostaliBrojJedinicaB -=brojJedinicaB;
                        preostaliBrojJedinicaAB = 0;
                    } else if (visakJedinicaO >= (brojJedinica[i] - preostaliBrojJedinicaAB) && visakJedinicaA >=0 && visakJedinicaB>=0) {
                        brojJedinicaO = brojJedinica[i] - preostaliBrojJedinicaAB;
                        pacijent[i] = to_string(brojJedinicaO) + " " + to_string(brojJedinicaA) + " " + to_string(brojJedinicaB) + " " + to_string(brojJedinicaAB);
                        preostaliBrojJedinicaO -= brojJedinicaO;
                        preostaliBrojJedinicaAB = 0;
                    } else if (visakJedinicaA < 0 && ((visakJedinicaO + visakJedinicaA + visakJedinicaB) >= (brojJedinica[i] - preostaliBrojJedinicaAB))  && visakJedinicaB>=0) {
                        if (visakJedinicaB > 0) {
                            brojJedinicaB = visakJedinicaB;
                            brojJedinicaO = (brojJedinica[i] - preostaliBrojJedinicaAB) - brojJedinicaB;
                            pacijent[i] = to_string(brojJedinicaO) + " " + to_string(brojJedinicaA) + " " + to_string(brojJedinicaB) + " " + to_string(brojJedinicaAB);
                            preostaliBrojJedinicaO -= brojJedinicaO;
                            preostaliBrojJedinicaB -= brojJedinicaB;
                            preostaliBrojJedinicaAB = 0;
                        } else {
                            brojJedinicaO = brojJedinica[i] - preostaliBrojJedinicaAB;
                            visakJedinicaO -= brojJedinicaO;
                            pacijent[i] = to_string(brojJedinicaO) + " " + to_string(brojJedinicaA) + " " + to_string(brojJedinicaB) + " " + to_string(brojJedinicaAB);
                            preostaliBrojJedinicaO -= brojJedinicaO;
                            preostaliBrojJedinicaAB = 0;
                        }
                    } else if (visakJedinicaB < 0 && ((visakJedinicaO + visakJedinicaA + visakJedinicaB) >= (brojJedinica[i] - preostaliBrojJedinicaAB))  && visakJedinicaA>=0) {
                        if (visakJedinicaA > 0) {
                            brojJedinicaA = visakJedinicaA;
                            brojJedinicaO = (brojJedinica[i] - preostaliBrojJedinicaAB) - brojJedinicaA;
                            pacijent[i] = to_string(brojJedinicaO) + " " + to_string(brojJedinicaA) + " " + to_string(brojJedinicaB) + " " + to_string(brojJedinicaAB);
                            preostaliBrojJedinicaO -= brojJedinicaO;
                            preostaliBrojJedinicaA -= brojJedinicaA;
                            preostaliBrojJedinicaAB = 0;
                        } else {
                            brojJedinicaO = brojJedinica[i] - preostaliBrojJedinicaAB;
                            pacijent[i] = to_string(brojJedinicaO) + " " + to_string(brojJedinicaA) + " " + to_string(brojJedinicaB) + " " + to_string(brojJedinicaAB);
                            preostaliBrojJedinicaO -= brojJedinicaO;
                            preostaliBrojJedinicaAB = 0;
                        }
                    } else if (visakJedinicaB < 0 && visakJedinicaA < 0 && ((visakJedinicaO + visakJedinicaA + visakJedinicaB) >= (brojJedinica[i] - preostaliBrojJedinicaAB))) {
                            brojJedinicaO = brojJedinica[i] - preostaliBrojJedinicaAB;
                            pacijent[i] = to_string(brojJedinicaO) + " " + to_string(brojJedinicaA) + " " + to_string(brojJedinicaB) + " " + to_string(brojJedinicaAB);
                            preostaliBrojJedinicaO -= brojJedinicaO;
                            preostaliBrojJedinicaAB = 0;
                    } else {
                        cout << "nemoguce" << endl;break;
                    }
                }
                else {
                    cout << "nemoguce" << endl;break;
                }
            }

        if (pacijent[n-1] != "" ) {
              cout << "moguce" << endl;
              for (int i=0; i<n; ++i) {
                cout << pacijent[i] << endl;
                }
            }
        }

    }

    return 0;
}