#include <bits/stdc++.h>
using namespace std;
int N,kol[10005],primioA[10005],primioO[10005],primioB[10005],primioAB[10005],kA,kO,kB,kAB;
string g[10005];
bool tacnost=true;
int main() {
    cin >> N;
    cin >> kO >> kA >> kB >> kAB;
    for (int i=1;i<=N;i++) {
        cin >> g[i] >> kol[i];

        for (int j=1;j<=N;j++){
            if (g[j]=="O"){
                while (kol[j]>0 and kO>0){
                      primioO[j]++;
                      kol[j]--;
                      kO--;
                }
                if (kol[j]>kO){
                    tacnost=false;
                }
            }
        }

        for (int k=1;k<=N;k++){
            if (g[k]=="A"){
                if (kol[k]>kA+kO){
                    tacnost=false;
                }
                else {
                    while (kol[k]>0 and kA>0){
                        primioA[k]++;
                        kol[k]--;
                        kA--;
                    }
                    if (kol[k]>0 and kA==0){
                        while (kol[k]>0 and kO>0){
                          primioO[k]++;
                          kol[k]--;
                          kO--;
                        }
                    }
                }
            }
            if (g[k]=="B"){
                if (kol[k]>kO+kB){
                    tacnost=false;
                }
                else {
                    while (kol[k]>0 and kB>0){
                          primioB[k]++;
                          kol[k]--;
                          kB--;
                    }
                    if (kol[k]>0 and kB==0){
                        while (kol[k]>0 and kO>0){
                              primioO[k]++;
                              kol[k]--;
                              kO--;
                        }
                    }
                }
            }

        }

        for (int m=1;m<=N;m++){
            if (kol[m]>kO+kB+kA+kAB){
                tacnost=false;
            }
            else {
                while (kol[m]>0 and kAB>0){
                    primioAB[m]++;
                    kol[m]--;
                    kAB--;
                }
                if (kol[m]>0 and kAB==0){
                    if (kA>kB){
                        while (kol[m]>0 and kA>0){
                            primioA[m]++;
                            kol[m]--;
                            kA--;
                        }
                    }
                    if (kA<kB){
                        if (kol[m]>0 and kA==0 and kB>0){
                            while (kol[m]>0 and kB>0){
                                primioB[m]++;
                                kol[m]--;
                                kB--;
                            }
                        }
                    }
                }
                if (kol[m]>0 and kA==0 and kB==0){
                    while (kol[m]>0 and kO>0){
                          primioO[m]++;
                          kol[m]++;
                          kO--;
                    }
                }
            }
        }
    }

    if (tacnost==false){
        cout << "nemoguce" << endl;
    }
    else {
        cout << "moguce" << endl;
        for (int j=1;j<=N;j++){
            cout << primioO[j] << " " << primioA[j] << " " << primioB[j] << " " << primioAB[j] << endl;
        }
    }
    return 0;
}