#include <bits/stdc++.h>
# define endl            '\n'
# define clr(x,a)        memset(x,a,sizeof(x))
# define vi              vector<int>
# define all(a)          a.begin(), a.end()
# define deb(x)          cout<<#x<<"=="<<x<<endl;
# define pb              push_back
# define sc              scanf
# define pr              printf
# define tc              int testcase; cin>>testcase; while(testcase--)
# define rev(s)          reverse(s.begin(),s.end())
# define linija          cout<<"___________\n";
using namespace std;
const int mxN=10005;
int o, ab, a, b, n;
struct slog{
   int a, b, ab, o, pot;
   string grupa;
}niz[mxN];
void ispisi_pot(){
   cout<<"pot: \n";
   for(int i=1; i<=n; i++) cout<<niz[i].pot<<" ";
   cout<<endl;
}
bool solve(){
   int x;
   for(int i=1; i<=n; i++){      //o->o
      if(niz[i].grupa=="O"){
         x=min(niz[i].pot, o);
         o-=x;
         niz[i].pot-=x;
         niz[i].o=x;
      }
   }
//   cout<<"o->o\n";
//   ispisi_pot();
//   cout<<endl;
   for(int i=1; i<=n; i++){      //ab->ab
      if(niz[i].grupa=="AB"){
         x=min(niz[i].pot, ab);
         ab-=x;
         niz[i].pot-=x;
         niz[i].ab=x;
      }
   }
//   cout<<"ab->ab\n";
//   ispisi_pot();
//   cout<<endl;
   for(int i=1; i<=n; i++){   //a->a
      if(niz[i].grupa=="A"){
         x=min(niz[i].pot, a);
         a-=x;
         niz[i].pot-=x;
         niz[i].a=x;
      }
   }
//   cout<<"a->a\n";
//   ispisi_pot();
//   cout<<endl;
   for(int i=1; i<=n; i++){   //a->ab
      if(niz[i].grupa=="AB"){
         x=min(niz[i].pot, a);
         a-=x;
         niz[i].pot-=x;
         niz[i].a=x;
      }
   }
//   cout<<"a->ab\n";
//      ispisi_pot();
//   cout<<endl;

   for(int i=1; i<=n; i++){   //b->b
      if(niz[i].grupa=="B"){
         x=min(niz[i].pot, b);
         b-=x;
         niz[i].pot-=x;
         niz[i].b=x;
      }
   }
//   cout<<"b->b\n";
//      ispisi_pot();
//   cout<<endl;

   for(int i=1; i<=n; i++){   //b->ab
      if(niz[i].grupa=="AB"){
         x=min(niz[i].pot, b);
         b-=x;
         niz[i].pot-=x;
         niz[i].b=x;
      }
   }
//   cout<<"b->ab\n";
//      ispisi_pot();
//   cout<<endl;



   for(int i=1; i<=n; i++){   //o-> sve
      x=min(niz[i].pot, o);
      o-=x;
      niz[i].pot-=x;
      niz[i].o=x;
   }
//   cout<<"o->sve\n";
//      ispisi_pot();
//   cout<<endl;


   for(int i=1; i<=n; i++){
      if(niz[i].pot>0) return 0;
   }

   return 1;
}
int main(){
//   freopen("in.txt", "r", stdin);
   cin>>n;
   cin>>o>>a>>b>>ab;
   for(int i=1; i<=n; i++){
      cin>>niz[i].grupa;
      sc("%d", &niz[i].pot);
   }
   if(solve()){
      cout<<"moguce\n";
      for(int i=1; i<=n; i++){
         pr("%d %d %d %d\n", niz[i].o, niz[i].a, niz[i].b, niz[i].ab);
      }
   }
   else cout<<"nemoguce\n";

   return 0;
}