#include <bits/stdc++.h>
using namespace std;
int n;
int O,A,B,AB;
bool moze=true;
struct slog{
    int ID;
    string grupa;
    int brj;
    int vaznost;
    int o=0,a=0,b=0,ab=0;
}pacijent[10005];
bool cmp(slog x, slog y){
    return x.vaznost<y.vaznost;
}
bool cmp2(slog x, slog y){
    return x.ID<y.ID;
}
void resi(){
    for(int i=1;i<=n;i++){
        if(pacijent[i].grupa=="O"){
            if(O>=pacijent[i].brj){
                pacijent[i].o=pacijent[i].brj;
                O-=pacijent[i].brj;
            }
            else{
                moze=false;
                break;
            }
        }
        else if(pacijent[i].grupa=="A"){
            if(A>=pacijent[i].brj){
                pacijent[i].a=pacijent[i].brj;
                A-=pacijent[i].brj;
            }
            else if(A>0){
                pacijent[i].a=A;
                A=0;
                if(O>=(pacijent[i].brj-pacijent[i].a)){
                    pacijent[i].o=(pacijent[i].brj-pacijent[i].a);
                    O-=(pacijent[i].brj-pacijent[i].a);
                }
                else{
                    moze=false;
                    break;
                }
            }
            else if(O>=pacijent[i].brj){
                pacijent[i].o=pacijent[i].brj;
                O-=pacijent[i].brj;
            }
            else{
                moze=false;
                break;
            }
        }
        else if(pacijent[i].grupa=="B"){
            if(B>=pacijent[i].brj){
                pacijent[i].b=pacijent[i].brj;
                B-=pacijent[i].brj;
            }
            else if(B>0){
                pacijent[i].b=B;
                B=0;
                if(O>=(pacijent[i].brj-pacijent[i].b)){
                    pacijent[i].o=(pacijent[i].brj-pacijent[i].b);
                    O-=(pacijent[i].brj-pacijent[i].b);
                }
                else{
                    moze=false;
                    break;
                }
            }
            else if(O>=pacijent[i].brj){
                pacijent[i].o=pacijent[i].brj;
                O-=pacijent[i].brj;
            }
            else{
                moze=false;
                break;
            }
        }
        else{
            if(AB>=pacijent[i].brj){
                pacijent[i].ab=pacijent[i].brj;
                AB-=pacijent[i].brj;
            }
            else{
                pacijent[i].ab=AB;
                AB=0;
                if(O>=(pacijent[i].brj-pacijent[i].ab)){
                    pacijent[i].o=(pacijent[i].brj-pacijent[i].ab);
                    O-=(pacijent[i].brj-pacijent[i].ab);
                }
                else if(A>=(pacijent[i].brj-pacijent[i].ab)){
                    pacijent[i].a=(pacijent[i].brj-pacijent[i].ab);
                    A-=(pacijent[i].brj-pacijent[i].ab);
                }
                else if(B>=(pacijent[i].brj-pacijent[i].ab)){
                    pacijent[i].b=(pacijent[i].brj-pacijent[i].ab);
                    B-=(pacijent[i].brj-pacijent[i].ab);
                }
                else{
                    pacijent[i].o=O;
                    O=0;
                    if(A>=(pacijent[i].brj-pacijent[i].ab-pacijent[i].o)){
                        pacijent[i].a=(pacijent[i].brj-pacijent[i].ab-pacijent[i].o);
                        A-=(pacijent[i].brj-pacijent[i].ab-pacijent[i].o);
                    }
                    else{
                        pacijent[i].a=A;
                        A=0;
                        if(B>=(pacijent[i].brj-pacijent[i].ab-pacijent[i].o-pacijent[i].a)){
                            pacijent[i].b=(pacijent[i].brj-pacijent[i].ab-pacijent[i].o-pacijent[i].a);
                            B-=(pacijent[i].brj-pacijent[i].ab-pacijent[i].o-pacijent[i].a);
                        }
                        else{
                            moze=false;
                            break;
                        }
                    }

                }
            }
        }
    }
}
int main(){
    scanf("%d", &n);
    scanf("%d %d %d %d", &O, &A, &B, &AB);
    for(int i=1;i<=n;i++){
        pacijent[i].ID=i;
        cin>>pacijent[i].grupa;
        scanf("%d", &pacijent[i].brj);
        if(pacijent[i].grupa=="O")pacijent[i].vaznost=1;
        else if(pacijent[i].grupa=="A")pacijent[i].vaznost=2;
        else if(pacijent[i].grupa=="B")pacijent[i].vaznost=3;
        else pacijent[i].vaznost=4;
    }
    if(n==0){
        cout<<"moguce"<<endl;
    }
    else{
        sort(pacijent+1,pacijent+1+n,cmp);
        resi();
        sort(pacijent+1,pacijent+1+n,cmp2);
        if(moze){
            cout<<"moguce"<<endl;
            for(int i=1;i<=n;i++){
                printf("%d %d %d %d\n", pacijent[i].o, pacijent[i].a, pacijent[i].b, pacijent[i].ab);
            }
        }
        else{
            cout<<"nemoguce"<<endl;
        }
    }

return 0;}