#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
typedef vector<int> VI;
typedef long long ll;
typedef pair<int,int> PII;
typedef double db;
mt19937 mrand(random_device{}()); 
const ll mod=1000000007;
const ll mod2=998244353;
int rnd(int x) { return mrand() % x;}
ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
// head

int n,o,a,b,ab;
map<string,vector<PII>> qs;

int main() {
	ios::sync_with_stdio(false); cin.tie(0);
	cin>>n>>o>>a>>b>>ab;
	rep(i,0,n) {
		string t;
		int x;
		cin>>t>>x;
		qs[t].pb({x,i});
	}
	vector<pair<PII,PII>> ans(n);
	rep(i,0,n) ans[i]=mp(mp(0,0),mp(0,0));
	for (auto x:{"O","A","B","AB"}) {
		for (auto q:qs[x]) {
			if (x=="O") {
				int z=min(q.fi,o);
				o-=z; q.fi-=z;
				ans[q.se].fi.fi=z;
				if (q.fi>0) {
					printf("nemoguce");
					return 0;
				}
			} else if (x=="A") {
				int z=min(q.fi,a);
				ans[q.se].fi.se=z;
				q.fi-=z; a-=z;
				z=min(q.fi,o);
				ans[q.se].fi.fi=z;
				q.fi-=z; o-=z;
				if (q.fi>0) {
					printf("nemoguce");
					return 0;
				}
			} else if (x=="B") {
				int z=min(q.fi,b);
				ans[q.se].se.fi=z;
				q.fi-=z; b-=z;
				z=min(q.fi,o);
				ans[q.se].fi.fi=z;
				q.fi-=z; o-=z;
				if (q.fi>0) {
					printf("nemoguce");
					return 0;
				}
			} else {
				int z=min(q.fi,ab);
				ans[q.se].se.se=z;
				q.fi-=z; ab-=z;
				z=min(q.fi,a);
				ans[q.se].fi.se=z;
				q.fi-=z; a-=z;
				z=min(q.fi,b);
				ans[q.se].se.fi=z;
				q.fi-=z; b-=z;
				z=min(q.fi,o);
				ans[q.se].fi.fi=z;
				q.fi-=z; o-=z;
				if (q.fi>0) {
					printf("nemoguce");
					return 0;
				}
			}
		}
	}
	printf("moguce\n");
	rep(i,0,n) {
		printf("%d %d %d %d\n",ans[i].fi.fi,ans[i].fi.se,ans[i].se.fi,ans[i].se.se);
	}
}