using System;


            //definisanje promenjljivih
            int N, O_dost, A_dost, B_dost, AB_dost, i, min, potrebno;
            string[] pacijent, dost;
            string krvna_g;
            //unosenje dostupne kolicine krvi i N
            N = int.Parse(Console.ReadLine());
            dost = Console.ReadLine().Split(" ");
            O_dost = int.Parse(dost[0]);
            A_dost = int.Parse(dost[1]);
            B_dost = int.Parse(dost[2]);
            AB_dost = int.Parse(dost[3]);
            //definisem opet promenljive zato sto mora nakon sto je uneseno N
            string[] O_dod = new string[N];
            string[] A_dod = new string[N];
            string[] B_dod = new string[N];
            string[] AB_dod = new string[N];
            //nastavljamo
            i = 0;
            min = 0;
            while (i < N)
            {
                //odredjivanje krvne grupe i potrebne kolicine krvi
                pacijent = Console.ReadLine().Split(" ");
                krvna_g = pacijent[0];
                potrebno = int.Parse(pacijent[1]);
                //dodeljivanje krvi
                if (potrebno != 0)
                {
                    if (krvna_g == "O")
                    {
                        O_dost = O_dost - potrebno;
                        O_dod[i] = potrebno.ToString();
                        A_dod[i] = "0";
                        B_dod[i] = "0";
                        AB_dod[i] = "0";
                        potrebno = 0;
                    }
                    else if (krvna_g == "A")
                    {
                        min = Math.Min(potrebno,A_dost);
                        A_dost = A_dost - min;
                        potrebno = potrebno - min;
                        O_dod[i] = "0";
                        A_dod[i] = min.ToString();
                        B_dod[i] = "0";
                        AB_dod[i] = "0";
                        if (potrebno != 0)
                        {
                            O_dost = O_dost - potrebno;
                            O_dod[i] = potrebno.ToString();
                            potrebno = 0;
                        }
                    }
                    else if (krvna_g == "B")
                    {
                        min = Math.Min(potrebno, B_dost);
                        B_dost = B_dost - min;
                        potrebno = potrebno - min;
                        O_dod[i] = "0";
                        A_dod[i] = "0";
                        B_dod[i] = min.ToString();
                        AB_dod[i] = "0";
                        if (potrebno != 0)
                        {
                            O_dost = O_dost - potrebno;
                            O_dod[i] = potrebno.ToString();
                            potrebno = 0;
                        }
                    }
                    else if (krvna_g == "AB")
                    {
                        min = Math.Min(potrebno, AB_dost);
                        AB_dost = AB_dost - min;
                        potrebno = potrebno - min;
                        O_dod[i] = "0";
                        A_dod[i] = "0";
                        B_dod[i] = "0";
                        AB_dod[i] = min.ToString();
                        if (potrebno != 0)
                        {
                            min = Math.Min(potrebno, B_dost);
                            B_dost = B_dost - min;
                            potrebno = potrebno - min;
                            B_dod[i] = min.ToString();
                            if (potrebno != 0)
                            {
                                min = Math.Min(potrebno, A_dost);
                                A_dost = A_dost - min;
                                potrebno = potrebno - min;
                                A_dod[i] = min.ToString();
                                if (potrebno != 0)
                                {
                                    O_dost = O_dost - potrebno;
                                    O_dod[i] = potrebno.ToString();
                                    potrebno = 0;
                                }
                            }
                        }
                    }
                }
                i = i + 1;
            }
            if (O_dost >= 0)
            {
                Console.WriteLine("moguce");
                i = 0;
                while (i < N)
                {
                    Console.WriteLine("{0} {1} {2} {3}", O_dod[i], A_dod[i], B_dod[i], AB_dod[i]);
                    i = i + 1;
                }
            }
            else
            {
                Console.WriteLine("nemoguce");
            }

        }
    }
}