using System;

class Prog
{
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());//unos
        string[] zalihe = Console.ReadLine().Split();
        int O_zalihe = int.Parse(zalihe[0]);
        int A_zalihe = int.Parse(zalihe[1]);
        int B_zalihe = int.Parse(zalihe[2]);
        int AB_zalihe = int.Parse(zalihe[3]);
        int[,] pacijenti = new int[n, 6];
        int most2 = 0;
        for (int i = 0; i < n; i++)
        {
            string[] s = Console.ReadLine().Split();
            string most1 = s[0];
            if (most1 == "O")
            {
                most2 = 1;
            }
            if (most1 == "A")
            {
                most2 = 2;
            }
            if (most1 == "B")
            {
                most2 = 3;
            }
            if (most1 == "AB")
            {
                most2 = 4;
            }
            pacijenti[i, 0] = most2;
            pacijenti[i, 1] = int.Parse(s[1]);
        }
        
        int dlj_moguce = 1;//davanje krvi
        for (int i = 0; i < n; i++)
        {
            if (pacijenti[i, 0] == 1)
            {
                pacijenti[i, 2] += pacijenti[i, 1];
                O_zalihe -= pacijenti[i, 1];
            }
        }
        if (O_zalihe < 0)
            dlj_moguce = 0;
        else
        {
            for (int i = 0; i < n; i++)
            {
                if (pacijenti[i, 0] == 2)
                {
                    if (A_zalihe >= pacijenti[i, 1])
                    {
                        pacijenti[i, 3] += pacijenti[i, 1];
                        A_zalihe -= pacijenti[i, 1];
                    }
                    else if (A_zalihe > 0)
                    {
                        pacijenti[i, 3] += A_zalihe;
                        A_zalihe = 0;
                    }
                    pacijenti[i, 2] += (pacijenti[i, 1] - pacijenti[i, 3]);
                    O_zalihe -= (pacijenti[i, 1] - pacijenti[i, 3]);
                }
                if (pacijenti[i, 0] == 3)
                {
                    if (B_zalihe >= pacijenti[i, 1])
                    {
                        pacijenti[i, 4] += pacijenti[i, 1];
                        B_zalihe -= pacijenti[i, 1];
                    }
                    else if (B_zalihe > 0)
                    {
                        pacijenti[i, 4] += B_zalihe;
                        B_zalihe = 0;
                    }
                    pacijenti[i, 2] += (pacijenti[i, 1] - pacijenti[i, 4]);
                    O_zalihe -= (pacijenti[i, 1] - pacijenti[i, 4]);
                }
            }
            if (O_zalihe < 0)
                dlj_moguce = 0;
            else
            {
                int zbir_preostale_krvi = O_zalihe + A_zalihe + B_zalihe + AB_zalihe;
                int brojac_AB = 0;
                for (int i = 0; i < n; i++)
                {
                    if (pacijenti[i, 0] == 4)
                        brojac_AB += pacijenti[i, 1];
                }
                if (zbir_preostale_krvi - brojac_AB < 0)
                    dlj_moguce = 0;
                else
                {
                    for (int i = 0; i < n; i++)
                    {
                        if (pacijenti[i, 0] == 4)
                        {
                            if (AB_zalihe >= pacijenti[i, 1])
                            {
                                pacijenti[i, 5] += pacijenti[i, 1];
                                AB_zalihe -= pacijenti[i, 1];
                            }
                            else if (AB_zalihe > 0)
                            {
                                pacijenti[i, 5] += AB_zalihe;
                                AB_zalihe = 0;
                            }
                            if (pacijenti[i, 5] < pacijenti[i, 1])
                            {
                                if (B_zalihe >= pacijenti[i, 1] - pacijenti[i, 5])
                                {
                                    pacijenti[i, 4] += pacijenti[i, 1] - pacijenti[i, 5];
                                    B_zalihe -= pacijenti[i, 1] - pacijenti[i, 5];
                                }
                                else if (B_zalihe > pacijenti[i, 1] - pacijenti[i, 5])
                                {
                                    pacijenti[i, 4] += B_zalihe;
                                    B_zalihe = 0;
                                }
                            }
                            if (pacijenti[i, 5] + pacijenti[i, 4] < pacijenti[i, 1])
                            {
                                if (A_zalihe >= pacijenti[i, 1] - (pacijenti[i, 5] + pacijenti[i, 4]))
                                {
                                    pacijenti[i, 3] += pacijenti[i, 1] - (pacijenti[i, 5] + pacijenti[i, 4]);
                                    A_zalihe -= pacijenti[i, 1] - (pacijenti[i, 5] + pacijenti[i, 4]);
                                }
                                else if (A_zalihe > pacijenti[i, 1] - (pacijenti[i, 5] + pacijenti[i, 4]))
                                {
                                    pacijenti[i, 3] += A_zalihe;
                                    A_zalihe = 0;
                                }
                            }
                            pacijenti[i, 2] += (pacijenti[i, 1] - (pacijenti[i, 5] + pacijenti[i, 4] + pacijenti[i, 3]));
                            O_zalihe -= (pacijenti[i, 1] - (pacijenti[i, 5] + pacijenti[i, 4] + pacijenti[i, 3]));
                            if (O_zalihe < 0)
                                dlj_moguce = 0;
                        }
                    }        
                }
            }
        }
        
        if (dlj_moguce == 0)//ispis
            Console.WriteLine("nemoguce");
        else
        {
            Console.WriteLine("moguce");
            for (int i = 0; i < n; i++)
            {
                for (int l = 2; l < 6; l++)
                {
                    Console.Write("{0} ", pacijenti[i, l]);
                }
                Console.WriteLine();
            } 
        }
    }
}