using System;

namespace Drugi
{
    class Program
    {
        struct Pacijent
        {
            public string krvna_grupa;
            public int kolicina_krvi;
            public int[] primljena_krv;
        }
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            Pacijent[] pacijenti = new Pacijent[n];
            string[] s = Console.ReadLine().Split();
            int[] kolicina = new int[s.Length];
            for(int i = 0; i < kolicina.Length; i++)
            {
                kolicina[i] = int.Parse(s[i]);
            }
            for(int i = 0; i < pacijenti.Length; i++)
            {
                s = Console.ReadLine().Split();
                pacijenti[i].krvna_grupa = s[0];
                pacijenti[i].kolicina_krvi = int.Parse(s[1]);
                pacijenti[i].primljena_krv = new int[4];
            }
            for (int i = 0; i < pacijenti.Length; i++)
            {
                if (pacijenti[i].krvna_grupa == "O")
                {
                    if (kolicina[0] >= pacijenti[i].kolicina_krvi)
                    {
                        pacijenti[i].primljena_krv[0] = pacijenti[i].kolicina_krvi;
                        kolicina[0] -= pacijenti[i].kolicina_krvi;
                    }
                    else
                    {
                        Console.Write("nemoguce");
                        return;
                    }
                }
            }
            for (int i = 0; i < pacijenti.Length; i++)
            {
                if(pacijenti[i].krvna_grupa == "A")
                {
                    if(kolicina[1] >= pacijenti[i].kolicina_krvi)
                    {
                        pacijenti[i].primljena_krv[1] = pacijenti[i].kolicina_krvi;
                        kolicina[1] -= pacijenti[i].kolicina_krvi;
                    }
                    else if(kolicina[1] + kolicina[0] >= pacijenti[i].kolicina_krvi)
                    {
                        kolicina[0] -= pacijenti[i].kolicina_krvi - kolicina[1];
                        pacijenti[i].primljena_krv[0] = pacijenti[i].kolicina_krvi - kolicina[1];
                        pacijenti[i].primljena_krv[1] = kolicina[1];
                        kolicina[1] = 0;
                    }
                    else
                    {
                        Console.Write("nemoguce");
                        return;
                    }
                }
                else if(pacijenti[i].krvna_grupa == "B")
                {
                    if (kolicina[2] >= pacijenti[i].kolicina_krvi)
                    {
                        pacijenti[i].primljena_krv[2] = pacijenti[i].kolicina_krvi;
                        kolicina[2] -= pacijenti[i].kolicina_krvi;
                    }
                    else if (kolicina[2] + kolicina[0] >= pacijenti[i].kolicina_krvi)
                    {
                        kolicina[0] -= pacijenti[i].kolicina_krvi - kolicina[2];
                        pacijenti[i].primljena_krv[0] = pacijenti[i].kolicina_krvi - kolicina[2];
                        pacijenti[i].primljena_krv[2] = kolicina[2];
                        kolicina[2] = 0;
                    }
                    else
                    {
                        Console.Write("nemoguce");
                        return;
                    }
                }
            }
            for(int i = 0; i < pacijenti.Length; i++)
            {
                if (pacijenti[i].krvna_grupa == "AB")
                {
                    if (kolicina[3] >= pacijenti[i].kolicina_krvi)
                    {
                        pacijenti[i].primljena_krv[3] = pacijenti[i].kolicina_krvi;
                        kolicina[3] -= pacijenti[i].kolicina_krvi;
                    }
                    else if(kolicina[3] + kolicina[0] >= pacijenti[i].kolicina_krvi)
                    {
                        pacijenti[i].primljena_krv[3] = kolicina[3];
                        pacijenti[i].primljena_krv[0] = pacijenti[i].kolicina_krvi - kolicina[3];
                        kolicina[0] -= pacijenti[i].primljena_krv[0];
                        kolicina[3] = 0;
                    }
                    else if (kolicina[3] + kolicina[0] + kolicina[1] >= pacijenti[i].kolicina_krvi)
                    {
                        pacijenti[i].primljena_krv[3] = kolicina[3];
                        pacijenti[i].primljena_krv[0] = kolicina[0];
                        pacijenti[i].primljena_krv[1] = pacijenti[i].kolicina_krvi - kolicina[3] - kolicina[0];
                        kolicina[1] -= pacijenti[i].primljena_krv[1];
                        kolicina[0] = 0;
                        kolicina[3] = 0;
                    }
                    else if(kolicina[3] + kolicina[0] + kolicina[1] + kolicina[2] >= pacijenti[i].kolicina_krvi)
                    {
                        pacijenti[i].primljena_krv[3] = kolicina[3];
                        pacijenti[i].primljena_krv[0] = kolicina[0];
                        pacijenti[i].primljena_krv[1] = kolicina[1];
                        pacijenti[i].primljena_krv[2] = pacijenti[i].kolicina_krvi - kolicina[3] - kolicina[0] - kolicina[1];
                        kolicina[2] -= pacijenti[i].primljena_krv[1];
                        kolicina[0] = 0;
                        kolicina[1] = 0;
                        kolicina[3] = 0;
                    }
                    else
                    {
                        Console.Write("nemoguce");
                        return;
                    }
                }
            }
            Console.WriteLine("moguce");
            for(int i = 0; i < pacijenti.Length; i++)
            {
                Console.WriteLine("{0} {1} {2} {3}", pacijenti[i].primljena_krv[0], pacijenti[i].primljena_krv[1], pacijenti[i].primljena_krv[2], pacijenti[i].primljena_krv[3]);
            }
        }
    }
}