using System;

namespace DrugiZadatak_Takmicenje_2021
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            string[] Krvne_grupe = Console.ReadLine().Split();
            int O =int.Parse(Krvne_grupe[0]);
            int A = int.Parse(Krvne_grupe[1]);
            int B = int.Parse(Krvne_grupe[2]);
            int AB = int.Parse(Krvne_grupe[3]);
            int Need_O=0,Need_A=0,Need_B=0,Need_AB=0;
            string[,] Pacijenti= new string[n, n]; 
            for (int i = 0; i < n; i++)
            {
                string[] Pacijent = Console.ReadLine().Split();
                Pacijenti[i, 0] = Pacijent[0];
                Pacijenti[i, 1] = Pacijent[1];
                if (Pacijent[0] == "O") Need_O+=int.Parse(Pacijent[1]);
                else if (Pacijent[0] == "A") Need_A += int.Parse(Pacijent[1]);
                else if (Pacijent[0] == "B") Need_B += int.Parse(Pacijent[1]);
                else Need_AB += int.Parse(Pacijent[1]);
            }
            if (Moguce_Rasporediti(O, A, B, AB, Need_O, Need_A, Need_B, Need_AB)) {
                Console.WriteLine("moguce");
                for (int i = 0; i < n; i++)
                {
                    string Grupa = Pacijenti[i, 0];
                    int Jedinice_krvi = int.Parse(Pacijenti[i, 1]);
                    if (Grupa == "O")
                    {
                        O = O - Need_O;
                        Console.WriteLine(Jedinice_krvi + " "+0+" "+0+" "+0);
                    }
                    if (Grupa == "A")
                    {
                        if (A < Jedinice_krvi)
                        {
                            Console.WriteLine(Need_A - A + " " + A + " " + 0 + " " + 0);
                            A = 0;
                            O = O - (Jedinice_krvi - A);
                        }
                        else
                        {
                            Console.WriteLine(0+" "+ Jedinice_krvi + " "+0+" "+0);
                            A = A - Jedinice_krvi;
                        }
                        continue;
                    }
                    if (Grupa == "B")
                    {
                        if (B < Jedinice_krvi)
                        {
                            Console.WriteLine(Jedinice_krvi - B + " " + 0 + " " + B + " " + 0);
                            B = 0;
                            O = O - (Jedinice_krvi - B);
                        }
                        else
                        {
                            Console.WriteLine(0 + " " + 0 + " " + Jedinice_krvi + " " + 0);
                            B = B - Jedinice_krvi;
                        }
                        continue;
                    }
                    if (Grupa == "AB")
                    {
                        if (AB - Jedinice_krvi >= 0)
                        {
                            Console.WriteLine(0 + " " + 0 + " " + 0 + " " + Jedinice_krvi);
                        }
                        else
                        {
                            if (Need_O < Need_A && Need_O < Need_B)
                            {
                                Console.WriteLine(Jedinice_krvi-AB + " " + 0 + " " + 0 + " " + AB);
                                continue;
                            }
                            if (Need_A<Need_O && Need_A<Need_B)
                                Console.WriteLine(0 + " " + (Jedinice_krvi - AB) + " " + 0 + " " + AB);
                            else
                                Console.WriteLine(0 + " " + 0 + " " + (Jedinice_krvi - AB) + " " + AB);
                            continue;
                        }
                    }

                }
            }
            else
                Console.WriteLine("nemoguce");
        }
        static bool Moguce_Rasporediti(int o, int a,int b,int ab,int o1,int a1,int b1,int ab1)
        {
            if (o >= o1)
            {
                o = o - o1;
            }
            else return false;
            if (a1 <= o + a)
            {
                if (a < a1)
                {
                    o = o - (a1 - a);
                    a = 0;
                }
                else
                    a = a - a1;
            }
            else return false;
            if (b1 <= o + b)
            {
                if (b < b1)
                {
                    o = o - (b1 - b);
                    a = 0;
                }
                else
                    b = b - b1;
            }
            else return false;
            if (ab1 <= o + a + b + ab)
                return true;
            else
                return false;
        }
    }
}