using System;

class Program
{
    static void Main(string[] args)
    {
        //unos
        int n = int.Parse(Console.ReadLine());
        string[] red = Console.ReadLine().Split();
        int[] dostupne = new int[4];
        for (int i = 0; i < red.Length; i++)
            dostupne[i] = int.Parse(red[i]);
        string[] krvneGrupe = new string[n];
        int[] potrebne = new int[n];
        for (int i = 0; i < n; i++)
        {
            string[] red1 = Console.ReadLine().Split();
            krvneGrupe[i] = red1[0];
            potrebne[i] = int.Parse(red1[1]);
        }
        //kraj unosa
        int[] indeksi = new int[100];
        int brojac = 0;
        int[,] upotrebljene = new int[n, 4];
        for (int i = 0; i < n; i++)
        {
            if (krvneGrupe[i] == "O")
            {
                if (dostupne[0] < potrebne[i])
                    goto l1;
                upotrebljene[i, 0] = potrebne[i];
                dostupne[0] -= potrebne[i];
            }
            if (krvneGrupe[i] == "A")
            {
                if (dostupne[0] + dostupne[1] < potrebne[i])
                    goto l1;
                else
                {
                    if (dostupne[1] >= potrebne[i])
                    {
                        upotrebljene[i, 1] = potrebne[i];
                        dostupne[1] -= potrebne[i];
                    }
                    upotrebljene[i, 1] = dostupne[1];
                    int a = potrebne[i] - dostupne[1];
                    upotrebljene[i, 0] = a;
                    dostupne[0] -= a;
                    dostupne[1] = 0;
                }
            }
            if (krvneGrupe[i] == "B")
            {
                if (dostupne[0] + dostupne[2] < potrebne[i])
                    goto l1;
                else
                {
                    if (dostupne[2] >= potrebne[i])
                    {
                        upotrebljene[i, 2] = potrebne[i];
                        dostupne[2] -= potrebne[i];
                    }
                    upotrebljene[i, 2] = dostupne[2];
                    upotrebljene[i, 0] = potrebne[i] - dostupne[2];
                    dostupne[0] -= potrebne[i] - dostupne[2];
                    dostupne[2] = 0;
                }
            }
            if (krvneGrupe[i] == "AB")
            {
                if (brojac == indeksi.Length) Array.Resize(ref indeksi, indeksi.Length * 2);
                indeksi[brojac] = i;
                brojac++;
            }
        }
        //ab deo
        for (int i = 0; i < brojac; i++)
        {
            if (dostupne[0] + dostupne[1] + dostupne[2] + dostupne[3] < potrebne[indeksi[i]])
                goto l1;
            if(dostupne[3] >= potrebne[indeksi[i]])
                upotrebljene[indeksi[i], 3] = potrebne[i];
            else
            {
                upotrebljene[indeksi[i], 3] = dostupne[3];
                int a = potrebne[indeksi[i]] - dostupne[3];
                if (a >= dostupne[2])
                {
                    upotrebljene[indeksi[i], 2] = dostupne[2];
                    a -= dostupne[2];
                }
                else
                { 
                    upotrebljene[indeksi[i], 2] = a;
                    a = 0;
                }
                if (a > 0) 
                {
                    if (a >= dostupne[1])
                    {
                        upotrebljene[indeksi[i], 1] = dostupne[1];
                        a -= dostupne[1];
                    }
                    else
                    {
                        upotrebljene[indeksi[i], 1] = a;
                        a = 0;
                    }
                    if (a > 0)
                    {
                        if (a >= dostupne[0])
                        {
                            upotrebljene[indeksi[i], 0] = dostupne[0];
                            a -= dostupne[0];
                        }
                        else
                        {
                            upotrebljene[indeksi[i], 0] = a;
                            a = 0;
                        }
                    }
                }
            }
        }
        Console.WriteLine("moguce");
        for (int i = 0; i < n; i++)
            Console.WriteLine(upotrebljene[i, 0] + " " + upotrebljene[i, 1] + " " + upotrebljene[i, 2] + " " + upotrebljene[i, 3]);
        goto l2;
    l1: Console.WriteLine("nemoguce");
    l2: Console.Write("");
    }
}