import java.util.Iterator;
import java.util.Scanner;

class Pacijent{
	static int broj = 0;
	static int suma = 0;
	String tipKrvi;
	int[] dobijeno = new int[] {0, 0, 0, 0};
	int potrebno;
	
	Pacijent(String tip,int potrebno) {
		this.tipKrvi = tip;
		this.potrebno = potrebno;
		suma += potrebno;
		broj++;
		
}
}

public class transfuzija {

	public static void main(String[] args) {
		int n;
		int o, a, b, ab;
		
		
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		o = sc.nextInt();
		a = sc.nextInt();
		b = sc.nextInt();
		ab = sc.nextInt();
		
		Pacijent[] pacijenti  = new Pacijent[n];
		
		for(int i = 0; i < n; i++) {
			String tip = sc.next();
			int potrebno = sc.nextInt();
			pacijenti[i] = new Pacijent(tip, potrebno);
		}
		
		sc.close();
		
		if(a+b+ab+o < Pacijent.suma) {
			System.out.println("nemoguce");
			return;
		}
		
		
		//:(
		for (int i = 0; i < n; i++) {
			if(pacijenti[i].tipKrvi.equals("O")){
				//Ako ima vise ili jednako o krvi u zalihama
				if(o >=pacijenti[i].potrebno) {
					o = o - pacijenti[i].potrebno;
					pacijenti[i].dobijeno[0] += pacijenti[i].potrebno;
					pacijenti[i].potrebno = 0;

					// Ako nema dovoljno znaci da je nemoguce svima dati
				} else {
					System.out.println("nemoguce");
					return;
				}
			} else if (pacijenti[i].tipKrvi.equals("A")) {
					if(a + o >= pacijenti[i].potrebno) {
						if(a < pacijenti[i].potrebno) {
							pacijenti[i].potrebno = pacijenti[i].potrebno - a;
							pacijenti[i].dobijeno[1] += a;
							a = 0;
							
							pacijenti[i].dobijeno[0] += pacijenti[i].potrebno;
							o = o - pacijenti[i].potrebno;
							pacijenti[i].potrebno = 0;
						} else {
							pacijenti[i].dobijeno[1] += pacijenti[i].potrebno;
							a = a - pacijenti[i].potrebno;
							pacijenti[i].potrebno = 0;
						}
					} else {
						System.out.println("nemoguce");
						return;
					}
				} else if (pacijenti[i].tipKrvi.equals("B")) {
					if(b + o >= pacijenti[i].potrebno) {
						if(b < pacijenti[i].potrebno) {
							pacijenti[i].dobijeno[2] += b;
							pacijenti[i].potrebno = pacijenti[i].potrebno - b;
							b = 0;
							
							pacijenti[i].dobijeno[0] += pacijenti[i].potrebno;
							o = o - pacijenti[i].potrebno;
							pacijenti[i].potrebno = 0;
						} else {
							pacijenti[i].dobijeno[2] += pacijenti[i].potrebno;
							b = b - pacijenti[i].potrebno;
							pacijenti[i].potrebno = 0;
						}
					} else {
						System.out.println("nemoguce");
						return;
					}
			} else if (pacijenti[i].tipKrvi.equals("AB")) {
				if(a + b + o + ab >= pacijenti[i].potrebno) {
					if(ab < pacijenti[i].potrebno) {
						pacijenti[i].dobijeno[3] += ab;
						pacijenti[i].potrebno -= ab;
						ab = 0;
						if(b < pacijenti[i].potrebno) {
							pacijenti[i].dobijeno[2] += b;
							pacijenti[i].potrebno -= b;
							b = 0;
							if (a < pacijenti[i].potrebno) {
								pacijenti[i].dobijeno[1] += a;
								pacijenti[i].potrebno -= a;
								a = 0;
								
								pacijenti[i].dobijeno[0] += pacijenti[i].potrebno;
								o = o - pacijenti[i].potrebno;
								pacijenti[i].potrebno = 0;
							} else {
								pacijenti[i].dobijeno[1] += pacijenti[i].potrebno;
								a = a - pacijenti[i].potrebno;
								pacijenti[i].potrebno = 0;
							}
						} else {
							pacijenti[i].dobijeno[2] += pacijenti[i].potrebno;
							b = b - pacijenti[i].potrebno;
							pacijenti[i].potrebno = 0;
					}
				} else {
					pacijenti[i].dobijeno[0] += pacijenti[i].potrebno;
					ab = ab - pacijenti[i].potrebno;
					pacijenti[i].potrebno = 0;
				} 
			} 
		}
		}
		
		System.out.println("moguce");
		for(int i = 0; i < n; i++) {
			System.out.println(String.valueOf(pacijenti[i].dobijeno[0]) + String.valueOf(pacijenti[i].dobijeno[1]) + String.valueOf(pacijenti[i].dobijeno[2]) + String.valueOf(pacijenti[i].dobijeno[3]));
		}
	}
	

}