#include <bits/stdc++.h>
using namespace std;
int n,brO,brA,brB,brAB,brojkojimutreba[100010],x;
queue <int> q;
int nizO[100010];
int nizA[100010];
int nizB[100010];
int nizAB[100010];
string KG[100010];
int main(){
    scanf("%d",&n);
    scanf("%d %d %d %d",&brO, &brA, &brB, &brAB);

    for(int i=0;i<n;i++){
        cin >> KG[i] >> brojkojimutreba[i];
    }
    for(int i=0;i<n;i++){
        if(KG[i]=="O"){
            if(brO<brojkojimutreba[i]){
                cout << "nemoguce" <<endl;
                return 0;
            }
            else{
                nizO[i]=brojkojimutreba[i];
                brO=brO-brojkojimutreba[i];
            }
        }
        if(KG[i]=="A"){
            if(brA+brO<brojkojimutreba[i]){
                cout << "nemoguce" << endl;
                return 0;
            }
            else{
                if(brA>=brojkojimutreba[i]){
                    nizA[i]=brojkojimutreba[i];
                    brA=brA-brojkojimutreba[i];
                }
                else{
                    nizA[i]=brA;
                    brojkojimutreba[i]=brojkojimutreba[i]-brA;
                    brA=0;
                    nizO[i]=brojkojimutreba[i];
                    brO=brO-brojkojimutreba[i];
                }
            }
        }
        if(KG[i]=="B"){
            if(brB+brO<brojkojimutreba[i]){
                cout << "nemoguce" << endl;
                return 0;
            }
            else{
                if(brB>=brojkojimutreba[i]){
                    nizB[i]=brojkojimutreba[i];
                    brB=brB-brojkojimutreba[i];
                }
                else{
                    nizB[i]=brB;
                    nizO[i]=brojkojimutreba[i]-brB;
                    brB=0;
                    brO=brO-nizO[i];
                }
            }
        }
        if(KG[i]=="AB"){
            q.push(i);
        }
    }
    while(q.size()>0){
        x=q.front();
        if(brAB+brA+brB+brO<brojkojimutreba[x]){
            cout << "nemoguce" << endl;
            return 0;
        }
        else{
            if(brAB>=brojkojimutreba[x]){
                nizAB[x]=brojkojimutreba[x];
                brAB=brAB-brojkojimutreba[x];
            }
            else{
                if(brAB+brA>=brojkojimutreba[x]){
                    nizAB[x]=brAB;
                    brAB=0;
                    nizA[x]=brojkojimutreba[x]-nizAB[x];
                    brA=brA-nizA[x];
                }
                else{
                    if(brAB+brA+brB>=brojkojimutreba[x]){
                        nizAB[x]=brAB;
                        nizA[x]=brA;
                        nizB[x]=brojkojimutreba[x]-brAB-brA;
                        brAB=0;
                        brA=0;
                        brojkojimutreba[x]=brojkojimutreba[x]-nizAB[x]-nizA[x];
                        brB=brB-brojkojimutreba[x];
                    }
                    else{
                        nizAB[x]=brAB;
                        nizA[x]=brA;
                        nizB[x]=brB;
                        brAB=0;
                        brA=0;
                        brB=0;
                        brojkojimutreba[x]=brojkojimutreba[x]-nizAB[x]-nizA[x]-nizB[x];
                        nizO[x]=brojkojimutreba[x];
                        brO=brO-brojkojimutreba[x];

                    }
                }
            }
        }
        q.pop();
    }

    cout << "moguce" << endl;
    for(int i=0;i<n;i++){
        printf("%d %d %d %d \n",nizO[i],nizA[i], nizB[i],nizAB[i]);
    }
    

    return 0;
}