include <iostream>
#include <map>
#include <vector>
#define ll long long

using namespace std;

struct pacijent {
	string kg;
	ll krv;
};

struct raspodela {
	ll o = 0, a = 0, b = 0, ab = 0;
};
vector<raspodela> pacijenti;

void fillout(int i, ll o, ll a, ll b, ll ab) {
	pacijenti[i].o = o;
	pacijenti[i].a = a;
	pacijenti[i].b = b;
	pacijenti[i].ab = ab;
}

void fill_a_or_b(int index, string kg, vector<ll>& zalihe, int potrebne, bool* d) {
	int i;
	if (kg == "A")
		i = 1;
	else
		i = 2;
	if (zalihe[i] >= potrebne) {
		fillout(index, 0, potrebne, 0, 0);
		zalihe[i] -= potrebne;
	}
	else {
		if (zalihe[i] + zalihe[0] >= potrebne) {
			fillout(index, potrebne - zalihe[i], zalihe[i], 0, 0);
			zalihe[0] -= potrebne - zalihe[i];
			zalihe[i] = 0;
		}
		else
			*d = false;
	}
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);

//  O A B AB
//  0 1 2 3
	int n; cin >> n;
	pacijenti.resize(n);
	int i;
	ll ukupnoKrvi = 0;
	vector<ll> zalihe(4);
	for (i = 0; i < 4; i++)
		cin >> zalihe[i];
	bool dovoljno = true;
	vector<int> abpacijenti;
	vector<ll> abp;

	for (i = 0; i < n; i++) {
		string k_grupa;
		cin >> k_grupa;
		ll potrebne;
		cin >> potrebne;
		if (dovoljno) {
			if (k_grupa == "A" || k_grupa == "B")
				fill_a_or_b(i, k_grupa, zalihe, potrebne, &dovoljno);
			if (k_grupa == "O") {
				if (zalihe[0] >= potrebne) {
					fillout(i, potrebne, 0, 0, 0);
					zalihe[0] -= potrebne;
				}
				else
					dovoljno = false;
			}
			if (k_grupa == "AB") {
				abpacijenti.push_back(i);
				abp.push_back(potrebne);
			}
		}
	}
	for (i = 0; i < abpacijenti.size(); i++) {
		if (zalihe[3] >= abp[i]) {
			fillout(abpacijenti[i], 0, 0, 0, abp[i]);
			zalihe[3] -= abp[i];
		}
		else {
			if (zalihe[3] + zalihe[2] >= abp[i]) {
				fillout(abpacijenti[i], 0, 0, abp[i] - zalihe[3], zalihe[3]);
				zalihe[2] -= abp[i] - zalihe[3];
				zalihe[3] = 0;
			}
			else {
				if (zalihe[2] + zalihe[1] >= abp[i]) {
					fillout(abpacijenti[i], 0, abp[i] - zalihe[2], zalihe[2], 0);
					zalihe[1] -= abp[i] - zalihe[2];
					zalihe[2] = 0;
				} 
				else {
					if (zalihe[0] + zalihe[1] >= abp[i]) {
						fillout(abpacijenti[i], abp[i] - zalihe[1], zalihe[1], 0, 0);
						zalihe[0] -= abp[i] - zalihe[1];
						zalihe[1] = 0;
					}
					else break;
				}
			}
		}
	}
	if (dovoljno) {
		cout << "moguce\n";
		for (i = 0; i < n; i++) {
			cout << pacijenti[i].o << " ";
			cout << pacijenti[i].a << " ";
			cout << pacijenti[i].b << " ";
			cout << pacijenti[i].ab << " ";
			cout << "\n";
		}
	}
	else
		cout << "nemoguce";
	return 0;
}