using System;
using System.Linq;
using System.Collections.Generic;

class program
{
    static void Main()
    {
        int broj_pacijenata = int.Parse(Console.ReadLine());
        int[,] ispis = new int[broj_pacijenata, 4];
        var s = Console.ReadLine().Split();
        int O = int.Parse(s[0]);
        int A = int.Parse(s[1]);
        int B = int.Parse(s[2]);
        int AB = int.Parse(s[3]);
        bool x = true;
        bool AB_popunjeno = true;
        for (int i = 0; i < broj_pacijenata; i++)
        {
            var unos = Console.ReadLine().Split();
            string krvna_grupa = unos[0];
            int potrebno = int.Parse(unos[1]);
            if (krvna_grupa == "O" && potrebno>O) { Console.WriteLine("nemoguce"); x = false; break; }
            else if (krvna_grupa == "A" && potrebno > O+A) { Console.WriteLine("nemoguce"); x = false; break; }
            else if (krvna_grupa == "B" && potrebno > O+B) { Console.WriteLine("nemoguce"); x = false; break; }
            else if (krvna_grupa == "AB" && potrebno > O+A+B+AB) { Console.WriteLine("nemoguce"); x = false; break; }
            if (krvna_grupa == "O" && potrebno <= O) { O -= potrebno; ispis[i, 0] = potrebno; }
            else if (krvna_grupa == "A" && potrebno < O + A) { if (potrebno <= A) { A -= potrebno; ispis[i, 1] = potrebno; } else { A = 0; potrebno -= A; ispis[i, 1] = A; if (potrebno <= O) { O -= potrebno; ispis[i, 0] = potrebno; } else { Console.WriteLine("nemoguce"); x = false; break; } } }
            else if (krvna_grupa == "B" && potrebno < O + B) { if (potrebno <= B) { B -= potrebno; ispis[i, 2] = potrebno; } else { B = 0; potrebno -= B; ispis[i, 2] = B; if (potrebno <= O) { O -= potrebno; ispis[i, 0] = potrebno; } else { Console.WriteLine("nemoguce"); x = false; break; } } }
            else if (krvna_grupa == "AB" && potrebno <= O + A + B + AB && potrebno <= AB) { AB = potrebno; ispis[i, 3] = potrebno; AB_popunjeno = false; }
            else if (krvna_grupa == "AB" && potrebno <= O + A + B + AB && potrebno <= A && AB_popunjeno == true) { A = potrebno; ispis[i, 1] = potrebno; AB_popunjeno = false; }
            else if (krvna_grupa == "AB" && potrebno <= O + A + B + AB && potrebno <= B && AB_popunjeno == true) { B = potrebno; ispis[i, 2] = potrebno; AB_popunjeno = false; }
            else if (krvna_grupa == "AB" && potrebno <= O + A + B + AB && potrebno <= O && AB_popunjeno == true) { B = potrebno; ispis[i, 0] = potrebno; AB_popunjeno = false; }
        }
        if (x)
        {
            Console.WriteLine("moguce");
            for (int i = 0; i < broj_pacijenata; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    Console.Write(ispis[i, j] + " ");
                }
                Console.WriteLine();
            }
        }

    }
}