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

using namespace std;

typedef struct pacijent {
	string kg;
	ll krv;
};

typedef struct raspodela {
	ll o, a, b, ab;
};
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;

	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") {
				if (zalihe[3] >= potrebne) {
					fillout(i, 0, 0, 0, potrebne);
					zalihe[3] -= potrebne;
				}
				else {
					if (zalihe[3] + zalihe[2] >= potrebne) {
						fillout(i, 0, 0, potrebne - zalihe[3], zalihe[3]);
						zalihe[2] -= potrebne - zalihe[3];
						zalihe[3] = 0;
					}
					else {
						if (zalihe[2] + zalihe[1] >= potrebne) {
							fillout(i, 0, potrebne - zalihe[2], zalihe[2], 0);
							zalihe[1] -= potrebne - zalihe[2];
							zalihe[2] = 0;
						}
						else {
							if (zalihe[0] + zalihe[1] >= potrebne) {
								fillout(i, potrebne - zalihe[1], zalihe[1], 0, 0);
								zalihe[0] -= potrebne - zalihe[1];
								zalihe[1] = 0;
							}
							else
								dovoljno = false;
						}
					}
				}
			}
		}
	}
	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\n";
	return 0;
}