#include <bits/stdc++.h>

using namespace std;

enum Grupa {O,A,B,AB};

struct abGrupa {
    int i;
    int kr;
};

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int n, kr, tempG;
    string g;
    cin >> n;
    int krvB[4], krvP[4] = {0,0,0,0};
    vector<abGrupa> ab;
    int resenje[4][n];
    for(int i = 0; i < 4; ++i) cin >> krvB[i];

    int pacijent[2][n];

    for(int i = 0; i < n; ++i) {
        int resTemp[4] = {0,0,0,0};
        cin >> g >> kr;
        if(g == "O") {
            //tempG = O;
            if(krvB[O] < kr) goto nemoguce;
            else {
                krvB[O] -= kr;
                resTemp[O] = kr;
            }
        }
        if(g == "A") {
            //tempG = A;
            if(krvB[A] < kr) {
                if(krvB[A] + krvB[O] < kr) goto nemoguce;
                else {
                    resTemp[A] = krvB[A];
                    resTemp[O] = kr - krvB[A];
                    krvB[O] -= kr - krvB[A];
                    krvB[A] = 0;
                }
            } else {
                krvB[A] -= kr;
                resTemp[A] = kr;
            }
        }
        if(g == "B") {
            //tempG = B;
            if(krvB[B] < kr) {
                if(krvB[B] + krvB[O] < kr) goto nemoguce;
                else {
                    resTemp[B] = krvB[B];
                    resTemp[O] = kr - krvB[B];
                    krvB[O] -= kr - krvB[B];
                    krvB[B] = 0;
                }
            } else {
                krvB[B] -= kr;
                resTemp[B] = kr;
            }
        }
        if(g == "AB") {
            abGrupa abTemp;
            abTemp.i = i;
            abTemp.kr = kr;
            ab.push_back(abTemp);
        }

        for(int k = 0; k < 4; ++k) resenje[k][i] = resTemp[k];
    }

    for(abGrupa p: ab) {
        int i = p.i;
        int kr = p.kr;
        int resTemp[4] = {0,0,0,0};
        int krvTemp = kr;

        for(int s = 0; s < 4; ++s) {
            if(krvB[s] >= krvTemp) {
                resTemp[s] = krvTemp;
                krvB[s] -= krvTemp;
                krvTemp = 0;
                goto krajPetlje;
            } else {
                resTemp[s] = krvB[s];
                krvTemp -= krvB[s];
                krvB[s] = 0;
            }
        }

        if(krvTemp > 0) goto nemoguce;

        krajPetlje:
        for(int k = 0; k < 4; ++k) resenje[k][i] = resTemp[k];
    }

    cout << "moguce\n";
    for(int i = 0; i < n; ++i) {
        cout << resenje[0][i] << " " << resenje[1][i] << " " << resenje[2][i] << " " << resenje[3][i] << "\n";
    }
    return 0;

    nemoguce:
    cout << "nemoguce";
    return 0;
}