#include <bits/stdc++.h>

using namespace std;

int main()
{
	int n;
	cin >> n;
	int o, a, b, ab;
	cin >> o >> a >> b >> ab;
	int oz = o;
	int az = a;
	int bz = b;
	int abz = ab;
	vector <pair<string, int>> list(n);
	int zbirO = 0;
	int zbirA = 0;
	int zbirB = 0;
	int zbirAB = 0;
	bool ok = true;
	for (int i = 0;i < n;i++) {
		cin >> list[i].first >> list[i].second;
		if (list[i].first == "O") {
			zbirO += list[i].second;
			oz -= list[i].second;
		}
		if (list[i].first == "A") {
			zbirA += list[i].second;
		}
		if (list[i].first == "B") {
			zbirB += list[i].second;
		}
		if (list[i].first == "AB") {
			zbirAB += list[i].second;
		}
	}
	if (o + a + b + ab < zbirA + zbirO + zbirB + zbirAB || oz<0 || az + oz<zbirA || bz + oz < zbirB || az+bz+oz<zbirA+zbirB) {
		cout << "nemoguce" << endl;
	}
	else {
		vector <int> aGrupiIde(2); // O,A
		vector <int> bGrupiIde(2); // O,B
		vector <int> abGrupiIde(4); // O, A, B, AB
		if (az >= zbirA) {
			aGrupiIde[0] = 0;
			aGrupiIde[1] = zbirA;
			az -= zbirA;
		}
		else { // uzimam O za A
			aGrupiIde[1] = az;
			aGrupiIde[0] = zbirA - az;
			oz -= zbirA - az;
			az = 0;
		}
		if (bz >= zbirB) {
			bGrupiIde[0] = 0;
			bGrupiIde[1] = zbirB;
			bz -= zbirB;
		}
		else {
			bGrupiIde[1] = bz;
			if (oz >= zbirB - bz) {
				bGrupiIde[0] = zbirB - bz;
				oz -= zbirB - bz;
				bz = 0;
			}
			else {
				cout << "nemoguce" << endl;
				ok = false;
			}	
		}
		if (ok) {
			abGrupiIde[0] = oz;
			abGrupiIde[1] = az;
			abGrupiIde[2] = bz;
			abGrupiIde[3] = abz;
			if (oz + az + bz + abz >= zbirAB) {
				cout << "moguce" << endl;
				for (int i = 0; i < n;i++) {
					if (list[i].first == "A") {
						if (aGrupiIde[1] > list[i].second) {//mozda >=
							cout << 0 << " " << list[i].second << " " << 0 << " " << 0 << endl;
							aGrupiIde[1] -= list[i].second;
						}
						else {
							cout << list[i].second - aGrupiIde[1] << " " << aGrupiIde[1] << " " << 0 << " " << 0 << endl;
							aGrupiIde[1] = 0;
						}						
					}
					if (list[i].first == "B") {
						if (bGrupiIde[1] > list[i].second) {
							cout << 0 << " " << 0 << " " << list[i].second << " " << 0 << endl;
							bGrupiIde[1] -= list[i].second;
						}
						else {
							cout << list[i].second - bGrupiIde[1] << " " << 0 << " " << bGrupiIde[1] << " " << 0 << endl;
							bGrupiIde[1] = 0;
						}
					}
					if (list[i].first == "O") {
						cout << list[i].second << " " << 0 << " " << 0 << " " << 0 << endl;
					}
					if (list[i].first == "AB") {
						int pomoc = list[i].second;
						int prBroj = 0;
						int drBroj = 0;
						int trBroj = 0;
						int cetBroj = 0;								
						if (abGrupiIde[0] != 0) {
							if (pomoc < abGrupiIde[0]) {
								prBroj = pomoc % abGrupiIde[0];
								abGrupiIde[0] -= prBroj;
								pomoc -= prBroj;
							}
							else {
								prBroj = abGrupiIde[0] % pomoc;
								abGrupiIde[0] -= prBroj;
								pomoc -= prBroj;
							}
						}
						if (abGrupiIde[1] != 0) {
							if (pomoc < abGrupiIde[1]) {
								drBroj = pomoc % abGrupiIde[1];
								abGrupiIde[1] -= drBroj;
								pomoc -= drBroj;
							}
							else {
								drBroj = abGrupiIde[1] % pomoc;
								abGrupiIde[1] -= drBroj;
								pomoc -= drBroj;
							}
						}
						if (abGrupiIde[2] != 0) {
							if (pomoc < abGrupiIde[2]) {
								trBroj = pomoc % abGrupiIde[2];
								abGrupiIde[2] -= trBroj;
								pomoc -= trBroj;
							}
							else {
								trBroj = abGrupiIde[2] % pomoc;
								abGrupiIde[2] -= trBroj;
								pomoc -= trBroj;
							}
						}
						if (abGrupiIde[3] != 0) {
							if (pomoc < abGrupiIde[3]) {
								cetBroj = pomoc % abGrupiIde[3];
								abGrupiIde[3] -= cetBroj;
								pomoc -= cetBroj;
							}
							else {
								cetBroj = abGrupiIde[3] % pomoc;
								abGrupiIde[3] -= cetBroj;
								pomoc -= cetBroj;
							}
						}
						cout << prBroj << " " << drBroj << " " << trBroj << " " << cetBroj << endl;						
					}
				}
			}
			else {
				cout << "nemoguce" << endl;
			}
		}

	}
	
}