using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace drugiZadatak
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int zaliheKrvi = 0;
            string[] krvnaGrupaPacijenta = new string[n];
            int[] potrebnaKrvPacijenta = new int[n];

            string[] s = Console.ReadLine().Split();
            for (int i = 0; i < 4; i++)
            {
                zaliheKrvi += (int)(int.Parse(s[i]) * Math.Pow(10, 3 - i));
            }

            for (int i = 0; i < n; i++)
            {
                s = Console.ReadLine().Split();
                krvnaGrupaPacijenta[i] = s[0];
                potrebnaKrvPacijenta[i] = int.Parse(s[1]);
            }

            int[] dobijenaKrv = new int[n];

            for (int i = 0; i < n; i++)
            {
                if (krvnaGrupaPacijenta[i] == "O")
                {
                    dobijenaKrv[i] = potrebnaKrvPacijenta[i] * 1000;
                    zaliheKrvi -= potrebnaKrvPacijenta[i] * 1000;
                }
            }

            for (int i = 0; i < n; i++)
            {
                if (krvnaGrupaPacijenta[i] == "A")
                {
                    int krv = potrebnaKrvPacijenta[i];
                    int krvA = (zaliheKrvi % 1000) / 100;
                    if (krv <= krvA)
                    {
                        dobijenaKrv[i] += krv * 100;
                        zaliheKrvi -= krv * 100;
                    }
                    else
                    {
                        dobijenaKrv[i] += krvA * 100;
                        zaliheKrvi -= krvA * 100;
                        krv -= krvA;

                        dobijenaKrv[i] += krv * 1000;
                        zaliheKrvi -= krv * 1000;
                    }
                }
                else if (krvnaGrupaPacijenta[i] == "B")
                {
                    int krv = potrebnaKrvPacijenta[i];
                    int krvB = (zaliheKrvi % 100) / 10;
                    if (krv <= krvB)
                    {
                        dobijenaKrv[i] += krv * 10;
                        zaliheKrvi -= krv * 10;
                    }
                    else
                    {
                        dobijenaKrv[i] += krvB * 10;
                        zaliheKrvi -= krvB * 10;
                        krv -= krvB;

                        dobijenaKrv[i] += krv * 1000;
                        zaliheKrvi -= krv * 1000;
                    }
                }
            }

            for (int i = 0; i < n; i++)
            {
                if (krvnaGrupaPacijenta[i] == "AB")
                {
                    int krv = potrebnaKrvPacijenta[i];
                    int krvAB = zaliheKrvi % 10;
                    if (krv <= krvAB)
                    {
                        dobijenaKrv[i] += krv;
                        zaliheKrvi -= krv;
                    }
                    else
                    {
                        dobijenaKrv[i] += krvAB;
                        zaliheKrvi -= krvAB;
                        krv -= krvAB;

                        int krvA = (zaliheKrvi % 1000) / 100;
                        int krvB = (zaliheKrvi % 100) / 10;

                        if (krvA != 0 && krv != 0)
                        {
                            int temp = Math.Min(krvA, krv);
                            dobijenaKrv[i] += temp * 100;
                            krv -= temp;
                            zaliheKrvi -= temp * 100;
                        }
                        if (krvB != 0 && krv != 0)
                        {
                            int temp = Math.Min(krvB, krv);
                            dobijenaKrv[i] += temp * 10;
                            krv -= temp;
                            zaliheKrvi -= temp * 10;
                        }
                        if (krv != 0)
                        {
                            dobijenaKrv[i] += krv * 1000;
                            zaliheKrvi -= krv * 1000;
                        }
                    }
                }
            }

            if (zaliheKrvi >= 0)
            {
                Console.WriteLine("moguce");
                for (int i = 0; i < n; i++)
                {
                    Console.Write(dobijenaKrv[i] / 1000 + " " + (dobijenaKrv[i] % 1000) / 100 + " " + (dobijenaKrv[i] % 100) / 10 + " " + dobijenaKrv[i] % 10);
                    Console.WriteLine();
                }
            }
            else
            {
                Console.WriteLine("nemoguce");
            }
        }
    }
}