#include <bits/stdc++.h>
using namespace std;

typedef struct covek {
	string grupa;
	long int potreba;
	long int transf[4];
} Covek;

int main() {
	int n;
	long int zalihe[4];
	long ukupno = 0;
	bool provera = true;
	
	cin>>n;
	cin>>zalihe[0]>>zalihe[1]>>zalihe[2]>>zalihe[3];
	
	Covek pacijenti[n];
	for (int i=0;i<n;i++) {
		cin>>pacijenti[i].grupa;
		cin>>pacijenti[i].potreba;
		
		ukupno += pacijenti[i].potreba;
		if (ukupno > zalihe[0]+zalihe[1]+zalihe[2]+zalihe[3])
			provera = false;
	}
	
	if (provera == false) {
		printf("nemoguce");
		return 0;
	}
	
	for (int i=0;i<n && provera==true;i++) {	
		if (pacijenti[i].grupa[0]=='O') {
			zalihe[0] -= pacijenti[i].potreba;
			pacijenti[i].transf[0] = pacijenti[i].potreba;
			pacijenti[i].transf[1] = 0;
			pacijenti[i].transf[2] = 0;
			pacijenti[i].transf[3] = 0;
			if (zalihe[0] < 0) provera = false;
		}
		
		if (provera == true && pacijenti[i].grupa[0]=='A' && pacijenti[i].grupa[1] != 'B') {
			if (zalihe[1] - pacijenti[i].potreba < 0) {
				pacijenti[i].transf[1] = zalihe[1];
				pacijenti[i].potreba -= zalihe[1];
				zalihe[1] = 0;
				zalihe[0] -= pacijenti[i].potreba;
				pacijenti[i].transf[0] = pacijenti[i].potreba;
				pacijenti[i].transf[2] = 0;
				pacijenti[i].transf[3] = 0;
				if (zalihe[0] < 0) provera = false;
			} else {
				zalihe[1] -= pacijenti[i].potreba;
				pacijenti[i].transf[0] = 0;
				pacijenti[i].transf[1] = pacijenti[i].potreba;
				pacijenti[i].transf[2] = 0;
				pacijenti[i].transf[3] = 0;
			}
		} 
		
		if (provera == true && pacijenti[i].grupa[0]=='B') {
			if (zalihe[2] - pacijenti[i].potreba < 0) {
				pacijenti[i].transf[2] = zalihe[2];
				pacijenti[i].potreba -= zalihe[2];
				zalihe[2] = 0;
				zalihe[0] -= pacijenti[i].potreba;
				pacijenti[i].transf[0] = pacijenti[i].potreba;
				pacijenti[i].transf[1] = 0;
				pacijenti[i].transf[3] = 0;
				if (zalihe[0] < 0) provera = false;
			} else {
				zalihe[2] -= pacijenti[i].potreba;
				pacijenti[i].transf[0] = 0;
				pacijenti[i].transf[1] = 0;
				pacijenti[i].transf[2] = pacijenti[i].potreba;
				pacijenti[i].transf[3] = 0;
			}
		} 
		
		if (provera == true && pacijenti[i].grupa[0]=='A' && pacijenti[i].grupa[1] == 'B') {
			if (zalihe[3] - pacijenti[i].potreba < 0) {
				pacijenti[i].transf[3] = zalihe [3];
				pacijenti[i].potreba -= zalihe[3];
				zalihe[3] = 0;
				if (pacijenti[i].potreba > 0 && zalihe[1] > 0) {
					if (zalihe[1] - pacijenti[i].potreba < 0) {
					    pacijenti[i].transf[1] = zalihe [1];
						pacijenti[i].potreba -= zalihe[1];
						zalihe[1] = 0;
					} else {
						pacijenti[i].transf[1] = pacijenti[i].potreba;
						zalihe[1] -= pacijenti[i].potreba;
						pacijenti[i].potreba = 0;
					}
				} else pacijenti[i].transf[1] = 0;
				if (pacijenti[i].potreba > 0 && zalihe[2] > 0) {
					if (zalihe[2] - pacijenti[i].potreba < 0) {
						pacijenti[i].transf[2] = zalihe [2];
						pacijenti[i].potreba -= zalihe[2];
						zalihe[2] = 0;
					} else {
						pacijenti[i].transf[2] = pacijenti[i].potreba;
						zalihe[1] -= pacijenti[i].potreba;
						pacijenti[i].potreba = 0;
					}
				} else pacijenti[i].transf[2] = 0;
				if (pacijenti[i].potreba > 0 && zalihe[0] > 0) {
					if (zalihe[0] - pacijenti[i].potreba < 0) {
						provera = false;
					} else {
						pacijenti[i].transf[0] = pacijenti[i].potreba;
						zalihe[1] -= pacijenti[i].potreba;
						pacijenti[i].potreba = 0;
					}
				} else pacijenti[i].transf[0] = 0;
			} else {
				zalihe[3] -= pacijenti[i].potreba;
				pacijenti[i].transf[0] = 0;
				pacijenti[i].transf[1] = 0;
				pacijenti[i].transf[2] = 0;
				pacijenti[i].transf[3] = pacijenti[i].potreba;
			}
		}
	}
	
	if (provera == false) {
		printf("nemoguce");
		return 0;
	}
	
	printf("moguce\n");
	for (int i=0;i<n;i++)printf("%ld %ld %ld %ld\n", pacijenti[i].transf[0], pacijenti[i].transf[1], pacijenti[i].transf[2], pacijenti[i].transf[3]);
}