#include <bits/stdc++.h>
using namespace std;
int n;
long long imamO,imamA,imamB,imamAB;
bool neuspeh=false;
int  m[10007][5];
string  c[10007];
long long  niz[10007];
void krvAB(){
  for(int i=1;i<=n;i++){
     if(c[i]=="AB"){
         //cout<<imamO<<" "<<imamA<<" "<<imamB<<" "<<imamAB<<"  niz " <<niz[i]<<endl;
        if(imamAB-niz[i]>=0){
           m[i][4]=niz[i];
           imamAB-=niz[i];
        }
        else if((imamAB+imamO+imamA+imamB-niz[i])>=0){
                //cout<<imamAB+imamO+imamA+imamB-niz[i]<<endl;
                m[i][4]=imamAB;
                niz[i]-=imamAB;
                imamAB=0;
                /// O
                if((imamO-niz[i])>=0){
                   //cout<<"kod O"<<endl;
                   m[i][1]=niz[i];
                   imamO-=niz[i];
                }
                else{
                   m[i][1]=imamO;
                   niz[i]-=imamO;
                   imamO=0;
                   ///A
                   if(imamA-niz[i]>=0){
                     //cout<<"kod A"<<endl;
                      m[i][2]=niz[i];
                      imamA-=niz[i];
                   }
                   else{
                     //cout<<"kod B"<<endl;
                      m[i][2]=imamA;
                      niz[i]-=imamA;
                      imamA=0;
                      if(imamB-niz[i]>=0){
                         m[i][3]=niz[i];
                         imamB-=niz[i];
                      }
                      else{
                         cout<<"nemoguce"<<endl;
                          exit(0);
                      }

                   }

                }
              }
              else{
                cout<<"nemoguce"<<endl;
                exit(0);
              }
      }
  }

}
void krvB(){
  for(int i=1;i<=n;i++){
        if(c[i]=="B"){
            if(imamB-niz[i]>=0){
               m[i][3]=niz[i];
               imamB-=niz[i];
            }
            else if(imamB+imamO-niz[i]>=0){
                    m[i][3]=imamB;
                    niz[i]-=imamB;
                    m[i][1]=niz[i];
                    imamB=0;
                    imamO-=niz[i];
                 }
                 else{
                  cout<<"nemoguce"<<endl;
                  exit(0);
                 }

        }

    }
}
void krvA(){
  for(int i=1;i<=n;i++){
        if(c[i]=="A"){
            if(imamA-niz[i]>=0){
               m[i][2]=niz[i];
               imamA-=niz[i];
            }
            else if(imamA+imamO-niz[i]>=0){
                    m[i][2]=imamA;
                    niz[i]-=imamA;
                    m[i][1]=niz[i];
                    imamA=0;
                    imamO-=niz[i];
                 }
                 else {
                  cout<<"nemoguce"<<endl;
                  exit(0);
                 }
        }

    }
}
void krvO(){
    for(int i=1;i<=n;i++){
        if(c[i]=="O"){
            if(imamO-niz[i]>=0){
               m[i][1]=niz[i];
               imamO-=niz[i];
            }
            else{
                cout<<"nemoguce"<<endl;
                exit(0);
            }

        }

    }
}
void ispis(){
   for(int i=1;i<=n;i++){
      for(int j=1;j<=4;j++){
          cout<<m[i][j]<<" ";
      }
      cout<<endl;
  }

}
int main(){
  cin>>n;
  cin>>imamO>>imamA>>imamB>>imamAB;
  for(int i=1;i<=n;i++){
      cin>>c[i]>>niz[i];
  }
  krvO();
  krvA();
  krvB();
  krvAB();
  cout<<"moguce"<<endl;
  ispis();
  return 0;
}
/*/
3
5 5 5 0
AB 7
AB 7
AB 2



/*/