using System;

namespace Transfuzija_krvi
{
    public class Pacijent
    {
        public string Krvna_grupa { get; }
        public int Potrebno_krvi { get; set; }
        public int[] Donirano { get; set; }

        public Pacijent(string Krvna_grupa, int Potrebno_krvi)
        {
            this.Krvna_grupa = Krvna_grupa;
            this.Potrebno_krvi = Potrebno_krvi;
            Donirano = new int[4];
        }
    }

    internal class Program
    {
        static void Upis(Pacijent[] p, int n)
        {
            for(int i = 0; i < n; i++)
            {
                string[] values = Console.ReadLine().Split(' ');
                string Krvna_grupa = values[0];
                int Potrebno_krvi = Convert.ToInt32(values[1]);
                p[i] = new Pacijent(Krvna_grupa, Potrebno_krvi);
            }
        }

        static void Main(string[] args)
        {
            int n = Convert.ToInt32(Console.ReadLine());
            int[] Kolicina_krvi = new int[4];
            string[] krv=Console.ReadLine().Split(' ');
            for (int i = 0; i < 4; i++)
            {
                Kolicina_krvi[i] = Convert.ToInt32(krv[i]);
            }
            Pacijent[] p = new Pacijent[n];
            Upis(p, n);
            for (int i = 0; i < 4; i++)
            {
                string c;
                switch (i)
                {
                    case 0: c = "O"; break;
                    case 1: c = "A"; break;
                    case 2: c = "B"; break;
                    case 3: c = "AB"; break;
                    default: c = ""; break;
                }
                for(int j = 0; j < n; j++)
                {
                    if (p[j].Krvna_grupa != c) continue;
                    switch (c)
                    {
                        case "O":
                            p[j].Donirano[0] = p[j].Potrebno_krvi;
                            Kolicina_krvi[0] -= p[j].Potrebno_krvi;
                            if (Kolicina_krvi[0] < 0)
                            {
                                Console.WriteLine("nemoguce"); Environment.Exit(0);
                            }
                            break;
                        case "A":
                            if (p[j].Potrebno_krvi > Kolicina_krvi[1])
                            {
                                p[j].Potrebno_krvi -= Kolicina_krvi[1];
                                p[j].Donirano[1] = Kolicina_krvi[1];
                                Kolicina_krvi[1] = 0;
                                p[j].Donirano[0] = p[j].Potrebno_krvi;
                                Kolicina_krvi[0] -= p[j].Potrebno_krvi;
                                if (Kolicina_krvi[0] < 0) {
                                    Console.WriteLine("nemoguce"); Environment.Exit(0);
                                }
                            }
                            else
                            {
                                p[j].Donirano[1] = p[j].Potrebno_krvi;
                                Kolicina_krvi[1] -= p[j].Potrebno_krvi;
                            }
                            break;
                        case "B":
                            if (p[j].Potrebno_krvi > Kolicina_krvi[2])
                            {
                                p[j].Potrebno_krvi -= Kolicina_krvi[2];
                                p[j].Donirano[2] = Kolicina_krvi[2];
                                Kolicina_krvi[2] = 0;
                                p[j].Donirano[0] = p[j].Potrebno_krvi;
                                Kolicina_krvi[0] -= p[j].Potrebno_krvi;
                                if (Kolicina_krvi[0] < 0)
                                {
                                    Console.WriteLine("nemoguce"); Environment.Exit(0);
                                }
                            }
                            else
                            {
                                p[j].Donirano[2] = p[j].Potrebno_krvi;
                                Kolicina_krvi[2] -= p[j].Potrebno_krvi;
                            }
                            break;
                        case "AB":
                            if (p[j].Potrebno_krvi > Kolicina_krvi[3])
                            {
                                p[j].Potrebno_krvi -= Kolicina_krvi[3];
                                p[j].Donirano[3] = Kolicina_krvi[3];
                                Kolicina_krvi[3] = 0;
                            }
                            else
                            {
                                p[j].Donirano[3] = p[j].Potrebno_krvi;
                                Kolicina_krvi[3] -= p[j].Potrebno_krvi;
                                break;
                            }
                            if (p[j].Potrebno_krvi > Kolicina_krvi[2])
                            {
                                p[j].Potrebno_krvi -= Kolicina_krvi[2];
                                p[j].Donirano[2] = Kolicina_krvi[2];
                                Kolicina_krvi[2] = 0;
                            }
                            else
                            {
                                p[j].Donirano[2] = p[j].Potrebno_krvi;
                                Kolicina_krvi[2] -= p[j].Potrebno_krvi;
                                break;
                            }
                            if (p[j].Potrebno_krvi > Kolicina_krvi[1])
                            {
                                p[j].Potrebno_krvi -= Kolicina_krvi[1];
                                p[j].Donirano[1] = Kolicina_krvi[1];
                                Kolicina_krvi[1] = 0;
                            }
                            else
                            {
                                p[j].Donirano[1] = p[j].Potrebno_krvi;
                                Kolicina_krvi[1] -= p[j].Potrebno_krvi;
                                break;
                            }
                            p[j].Donirano[0] = p[j].Potrebno_krvi;
                            Kolicina_krvi[0] -= p[j].Potrebno_krvi;
                            if (Kolicina_krvi[0] < 0)
                            {
                                Console.WriteLine("nemoguce"); Environment.Exit(0);
                            }
                            break;
                        default: break;
                    }
                }
            }
            Console.WriteLine("moguce");
            for(int i = 0; i < n; i++)
            {
                Console.WriteLine("{0} {1} {2} {3}", p[i].Donirano[0], p[i].Donirano[1], p[i].Donirano[2], p[i].Donirano[3]);
            }
        }
    }
}