using System;
class Program{
    struct Primalac{
        public string Grupa;
        public int BrPotrebnihJedinica;
        public int[] JedinicePrimljenih;
    }
    public static void Main(){
        int N = int.Parse(Console.ReadLine());
        nizPrimalaca = new Primalac[N];
        int[] zalihe = new int[4];
        string[] red = Console.ReadLine().Split();
        for(int i = 0; i<4; i++){
            zalihe[i] = int.Parse(red[i]);
        }
        for(int i = 0; i<N; i++){
            red = Console.ReadLine().Split();
            nizPrimalaca[i] = new Primalac();
            nizPrimalaca[i].Grupa = red[0];
            nizPrimalaca[i].BrPotrebnihJedinica = int.Parse(red[1]);
            nizPrimalaca[i].JedinicePrimljenih = new int[4];
        }
        //redosled obrade:
        //1. prvo se obradjuju primaoci O grupe
        //od ukupnih zaliha O se oduzima koliko treba
        //ako u zalihama ima manje nego potrebno, znaci da je nemoguce
        for(int i = 0; i<N; i++){
            if(nizPrimalaca[i].Grupa == "O"){
                if(zalihe[0] < nizPrimalaca[i].BrPotrebnihJedinica) Console.WriteLine("nemoguce");
                zalihe[0] -= nizPrimalaca[i].BrPotrebnihJedinica;
                nizPrimalaca[i].JedinicePrimljenih[0] += nizPrimalaca[i].BrPotrebnihJedinica;
            }
        }
        //2. onda idu A i B grupe
        //prvo se iz zaliha uzima A/B grupa
        //cim A ili B postane 0, umesto A ili B krenemo da uzimamo od O
        //pri cemu ako ima manje zaliha A/B nego sto je BrPotrebnihJedinica ali opet nema nula
        //taj ostatak se uzima pa se prelazi na O
        //ako O predje u minus, znaci da je nemoguce
        int AiliB = 1; //A
        for(int i = 0; i<N; i++){
            if(nizPrimalaca[i].Grupa == "A" || nizPrimalaca[i].Grupa == "B"){
                if(nizPrimalaca[i].Grupa == "B"){
                    AiliB = 2;
                }
                if(zalihe[AiliB] >= nizPrimalaca[i].BrPotrebnihJedinica){
                    nizPrimalaca[i].JedinicePrimljenih[AiliB] += nizPrimalaca[i].BrPotrebnihJedinica;
                    zalihe[AiliB] -= nizPrimalaca[i].BrPotrebnihJedinica;
                }
                else {
                    nizPrimalaca[i].JedinicePrimljenih[AiliB] += zalihe[AiliB];
                    nizPrimalaca[i].BrPotrebnihJedinica -= zalihe[AiliB];//ovo nam treba da odredimo ostatak
                    zalihe[AiliB] = 0;
                    if(zalihe[0] >= nizPrimalaca[i].BrPotrebnihJedinica){
                        nizPrimalaca[i].JedinicePrimljenih[0] += nizPrimalaca[i].BrPotrebnihJedinica;
                        zalihe[0] -= nizPrimalaca[i].BrPotrebnihJedinica;
                    }
                    else Console.WriteLine("nemoguce");
                }
            }
        }
        //3. onda ide AB grupa
        //oni mogu bilo koju grupu pa se uzima ono sto je redom preostalo
        //ako ukupan broj jedinica zaliha predje na nulu, znaci da je nemoguce
        for(int i = 0; i<N; i++){
            if(zalihe[0] + zalihe[1] + zalihe[2] + zalihe[3] < nizPrimalaca[i].BrPotrebnihJedinica) Console.WriteLine("nemoguce");
            
            int j = 0;
            while(nizPrimalaca[i].BrPotrebnihJedinica != 0){
                if(zalihe[j] >= nizPrimalaca[i].BrPotrebnihJedinica){
                    nizPrimalaca[i].JedinicePrimljenih[j] += nizPrimalaca[i].BrPotrebnihJedinica;
                    zalihe[j] -= nizPrimalaca[i].BrPotrebnihJedinica;
                }
                else{
                    nizPrimalaca[i].JedinicePrimljenih[j] += zalihe[j];
                    zalihe[j] = 0;
                }
                j++;
            }
        }
        //4. ako smo dosli do ovde, moguce je i ide ispis
        //za svakog pacijenta (indeks i) ispisu se sva 4 clana nizPrimalaca[i].JedinicePrimljenih
        Console.WriteLine("moguce");
        for(int i = 0; i<N; i++){
            for(int j = 0; j<4; j++){
                Console.Write(nizPrimalaca[i].JedinicePrimljenih[j] + " ");
            }
            Console.WriteLine();
        }
    }
}