using System;

namespace Transfuzija
{
    class Program
    {
        static void Ispis(int[,] matrica)
        {
            for (int i = 0; i < matrica.GetLength(0); i++)
            {
                for (int j = 1; j < matrica.GetLength(1) - 1; j++)
                {
                    Console.Write("{0}\t", matrica[i, j]);
                }
                Console.WriteLine(matrica[i, matrica.GetLength(1) - 1]);
            }
        }
        /*static void PopunjavanjeNultom(ref int[,] matrica, string[] pacijenti_krvna_grupa) 
        {
            
        }*/
        static void Main(string[] args)
        {
            int n = Convert.ToInt32(Console.ReadLine());
            string[] red = Console.ReadLine().Split();
            int O = Convert.ToInt32(red[0]);
            int A = Convert.ToInt32(red[1]);
            int B = Convert.ToInt32(red[2]);
            int AB = Convert.ToInt32(red[3]);
            string[] pacijenti_krvna_grupa = new string[n];
            bool nemoguce = false;
            int[,] matrica = new int[n, 5];
            for (int i = 0; i < n; i++) 
            {
                red = Console.ReadLine().Split();
                pacijenti_krvna_grupa[i] = red[0];
                matrica[i,0] = Convert.ToInt32(red[1]);
            }
            for (int i = 0; i < n; i++)
            {
                if (pacijenti_krvna_grupa[i] == "O") 
                {
                    matrica[i, 1] += matrica[i, 0];
                    O -= matrica[i, 1];
                    matrica[i, 0] = 0;
                    if (O < 0) 
                    {
                        nemoguce = true;
                        goto izlaz;
                    }
                }
                if (pacijenti_krvna_grupa[i] == "A" && A!=0)
                {
                    matrica[i, 2] += matrica[i, 0];
                    A -= matrica[i, 2];
                    matrica[i, 0] = 0;
                    if (A < 0)
                    {
                        matrica[i, 0] = Math.Abs(A);
                        matrica[i, 2] -= matrica[i, 0];
                        A = 0;
                    }
                }
                if (pacijenti_krvna_grupa[i] == "B" && B != 0)
                {
                    matrica[i, 3] += matrica[i, 0];
                    B -= matrica[i, 3];
                    matrica[i, 0] = 0;
                    if (B < 0)
                    {
                        matrica[i, 0] = Math.Abs(B);
                        matrica[i, 3] -= matrica[i, 0];
                        B = 0;
                    }
                }
                if (pacijenti_krvna_grupa[i] == "AB" && AB != 0)
                {
                    matrica[i, 4] += matrica[i, 0];
                    AB -= matrica[i, 4];
                    matrica[i, 0] = 0;
                    if (AB < 0)
                    {
                        matrica[i, 0] = Math.Abs(AB);
                        matrica[i, 4] -= matrica[i, 0];
                        A = 0;
                    }
                }
            }
            for (int i = 0; i < n; i++) 
            {
                if (pacijenti_krvna_grupa[i] == "A" || pacijenti_krvna_grupa[i] == "B")
                {
                    matrica[i, 1] += matrica[i, 0];
                    O -= matrica[i, 1];
                    matrica[i, 0] = 0;
                    if (O < 0)
                    {
                        nemoguce = true;
                        goto izlaz;
                    }
                }
            }
            for (int i = 0; i < n; i++) 
            {
                if (pacijenti_krvna_grupa[i] == "AB" && matrica[i, 0] != 0)
                {
                    if (O != 0) 
                    {
                        matrica[i, 1] += matrica[i, 0];
                        O -= matrica[i, 1];
                        matrica[i, 0] = 0;
                        if (O < 0)
                        {
                            matrica[i, 0] = Math.Abs(O);
                            matrica[i, 1] -= matrica[i, 0];
                            O = 0;
                        }
                    }
                    else if (matrica[i, 0] != 0 && A != 0) 
                    {
                        matrica[i, 2] += matrica[i, 0];
                        A -= matrica[i, 2];
                        matrica[i, 0] = 0;
                        if (A < 0)
                        {
                            matrica[i, 0] = Math.Abs(A);
                            matrica[i, 2] -= matrica[i, 0];
                            A = 0;
                        }
                    }
                    else if (matrica[i, 0] != 0 && B != 0)
                    {
                        matrica[i, 3] += matrica[i, 0];
                        B -= matrica[i, 3];
                        matrica[i, 0] = 0;
                        if (O < 0)
                        {
                            nemoguce = true;
                            goto izlaz;
                        }
                    }
                }
            }
            izlaz:
            if (nemoguce) Console.WriteLine("nemoguce");
            else 
            {
                Console.WriteLine("moguce");
                Ispis(matrica);
            }
        }
    }
}