using System;

namespace TAKMICENJE_TRANSFUZIJA
{
    class Program
    {
        struct Pacijent
        {
            public string grupa;
            public int jedinice;
        }
        struct Podeljeno
        {
            public int O;
            public int A;
            public int B;
            public int AB;
        }
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int[] zalihe = new int[4];
            string[] zaliheUnos = Console.ReadLine().Split();
            Pacijent[] pacijenti = new Pacijent[n];
            Podeljeno[] podeljene = new Podeljeno[n];
            for (int i = 0; i < 4; i++)
                zalihe[i] = int.Parse(zaliheUnos[i]);
            for (int i = 0; i < n; i++)
            {
                string[] s = Console.ReadLine().Split();
                pacijenti[i].grupa = s[0];
                pacijenti[i].jedinice = int.Parse(s[1]);
            }
            bool nemoguce = false;
            for (int i = 0; i < n; i++)
            {
                Podela(pacijenti[i], ref zalihe, ref nemoguce, ref podeljene[i]);
                if (nemoguce)
                    break;
            }
            for (int i = 0; i < n; i++)
            {
                PodelaAB(pacijenti[i], ref zalihe, ref nemoguce, ref podeljene[i]);
                if (nemoguce)
                    break;
            }
            for (int i = 0; i < 4; i++)
            {
                if (zalihe[0] < 0 || zalihe[1] < 0 || zalihe[2] < 0 || zalihe[3] < 0)
                    nemoguce = true;
            }
            if (nemoguce)
                Console.WriteLine("nemoguce");
            else
            {
                Console.WriteLine("moguce");
                for (int i = 0; i < n; i++)
                    Console.WriteLine(podeljene[i].O + " " + podeljene[i].A + " " + podeljene[i].B + " " + podeljene[i].AB);
            }
        }
            static void Podela(Pacijent pacijenti, ref int[] zalihe, ref bool nemoguce, ref Podeljeno podeljene)
            {
                if (pacijenti.grupa == "O")
                {
                    zalihe[0] -= pacijenti.jedinice;
                    podeljene.O += pacijenti.jedinice;
                }
                else if (pacijenti.grupa == "A" && zalihe[1] >= pacijenti.jedinice)
                {
                    zalihe[1] -= pacijenti.jedinice;
                    podeljene.A += pacijenti.jedinice;
                }
                else if (pacijenti.grupa == "A")
                {
                    zalihe[0] -= (pacijenti.jedinice - zalihe[1]);
                    podeljene.O += (pacijenti.jedinice - zalihe[1]);
                    podeljene.A += zalihe[1];
                    zalihe[1] -= zalihe[1];
                }
                else if (pacijenti.grupa == "B" && zalihe[2] >= pacijenti.jedinice)
                {
                    zalihe[2] -= pacijenti.jedinice;
                    podeljene.B += pacijenti.jedinice;
                }
                else if (pacijenti.grupa == "B")
                {
                    zalihe[0] -= (pacijenti.jedinice - zalihe[2]);
                    podeljene.O += (pacijenti.jedinice - zalihe[2]);
                    podeljene.B += zalihe[2];
                    zalihe[2] -= zalihe[2];
                }
                else if (pacijenti.grupa == "AB")
                { }
                else
                    nemoguce = true;
            }
        }

        static void PodelaAB(Pacijent pacijenti, ref int[] zalihe, ref bool nemoguce, ref Podeljeno podeljene)
        {
            int fali = pacijenti.jedinice;
            if (pacijenti.grupa == "AB" && zalihe[3] >= fali)
            {
                podeljene.AB += pacijenti.jedinice;
                fali -= pacijenti.jedinice;
                zalihe[3] -= pacijenti.jedinice;
            }
            else if (pacijenti.grupa == "AB" && zalihe[3] > 0 && fali > 0)
            {
                podeljene.AB += zalihe[3];
                fali -= zalihe[3];
                zalihe[3] -= zalihe[3];
            }
            if (pacijenti.grupa == "AB" && zalihe[2] >= fali && fali > 0)
            {
                podeljene.B += fali;
                zalihe[2] -= fali;
                fali -= fali;
            }
            else if (pacijenti.grupa == "AB" && zalihe[2] > 0 && fali > 0)
            {
                podeljene.B += zalihe[2];
                fali -= zalihe[2];
                zalihe[2] -= zalihe[2];
            }
            if (pacijenti.grupa == "AB" && zalihe[1] >= fali && fali > 0)
            {
                podeljene.A += fali;
                zalihe[1] -= fali;
                fali -= fali;
            }
            else if (pacijenti.grupa == "AB" && zalihe[1] > 0 && fali > 0)
            {
                podeljene.A += zalihe[1];
                fali -= zalihe[1];
                zalihe[1] -= zalihe[1];
            }
            if (pacijenti.grupa == "AB" && zalihe[0] >= fali && fali > 0)
            {
                podeljene.O += fali;
                zalihe[0] -= fali;
                fali -= fali;
            }
            else if (pacijenti.grupa == "AB" && fali > 0)
                nemoguce = true;
        }
    }
}