using System;

namespace Tranfuzija_krvi
{
    class Program
    {
        static void Main(string[] args)
        {
            int N = Convert.ToInt32(Console.ReadLine());
            string[] zalihe = Console.ReadLine().Split();
            int O = int.Parse(zalihe[0]);
            int A = int.Parse(zalihe[1]);
            int B = int.Parse(zalihe[2]);
            int AB = int.Parse(zalihe[3]);
            string[] krvna_grupa = new string[N];
            int[] kolicina = new int[N];
            int zbirKolicina = 0;
            for (int i = 0; i < N; i++)
            {
                string[] str1 = Console.ReadLine().Split();
                krvna_grupa[i] = str1[0];
                kolicina[i] = int.Parse(str1[1]);
                if (kolicina[i] > N)
                {
                    Console.WriteLine("nemoguce");
                    return;
                }
                zbirKolicina += kolicina[i];
            }
            if ((O + A + B + AB) < zbirKolicina)
            {
                Console.WriteLine("nemoguce");
                return;
            }
            int[,] rezultat = new int[N, 4];
            for (int i = 0; i < N; i++)
            {
                if ((krvna_grupa[i] == "O" && O < kolicina[i]) || (krvna_grupa[i] == "A" && A == 0 && O == 0) || (krvna_grupa[i] == "B" && B == 0 && O == 0))
                {
                    Console.WriteLine("nemoguce");
                    return;
                }
                if (krvna_grupa[i] == "O")
                {
                    rezultat[i, 0] = kolicina[i];
                    O = O - kolicina[i];
                }
                else if (krvna_grupa[i] == "A")
                {
                    if (kolicina[i] <= A)
                    {
                        rezultat[i, 1] = kolicina[i];
                        A = A - kolicina[i];
                    }
                    else if ((kolicina[i] - A) <= O)
                    {
                        rezultat[i, 1] = A;
                        rezultat[i, 0] = kolicina[i] - A; 
                        A = 0;
                        O = O - (kolicina[i] - A);
                    }
                    else
                    {
                        Console.WriteLine("nemoguce");
                        return;
                    }
                }
                else if (krvna_grupa[i] == "B")
                {
                    if (kolicina[i] <= B)
                    {
                        rezultat[i, 2] = kolicina[i];
                        B = B - kolicina[i];
                    }
                    else if ((kolicina[i] - B) <= O)
                    {
                        rezultat[i, 2] = B;
                        rezultat[i, 1] = kolicina[i] - B; 
                        B = 0;
                        O = O - (kolicina[i] - B);
                    }
                    else
                    {
                        Console.WriteLine("nemoguce");
                        return;
                    }
                }
            }
            for (int i = 0; i < N; i++)
            {
                if (krvna_grupa[i] == "AB")
                {
                    if ((O + A + B + AB) < kolicina[i])
                    {
                        Console.WriteLine("nemoguce");
                        return;
                    }
                    int potrebnaKolicina = kolicina[i];
                    if (AB >= potrebnaKolicina)
                    {
                        rezultat[i, 3] = potrebnaKolicina;
                        AB -= potrebnaKolicina;
                        potrebnaKolicina -= potrebnaKolicina;
                    }
                    else
                    {
                        rezultat[i, 3] = AB;
                        AB = 0;
                        potrebnaKolicina -= AB;
                    }

                    if (O >= potrebnaKolicina)
                    {
                        rezultat[i, 0] = potrebnaKolicina;
                        O -= potrebnaKolicina;
                    }
                    else
                    {
                        rezultat[i, 0] = O;
                        O = 0;
                        potrebnaKolicina -= O;
                    }

                    if (A >= potrebnaKolicina)
                    {
                        rezultat[i, 1] = potrebnaKolicina;
                        A -= kolicina[i];
                    }
                    else
                    {
                        rezultat[i, 1] = O;
                        A = 0;
                        potrebnaKolicina -= A;
                    }

                    if (B >= potrebnaKolicina)
                    {
                        rezultat[i, 2] = potrebnaKolicina;
                        B -= kolicina[i];
                    }
                    else
                    {
                        rezultat[i, 2] = O;
                        B = 0;
                        potrebnaKolicina -= B;
                    }
                }
            }
            Console.WriteLine("moguce");
            for(int i = 0;i<N;i++)
            {
                for(int j = 0;j<4;j++)
                {
                    Console.Write(rezultat[i, j] + " ");
                }
                Console.WriteLine();
            }
        }
    }
}