using System;
using System.Linq;
using System.Collections.Generic;
class cppboljiodcs
{
    static void ispisiMatricu<T>(T[,] matrica, int n, int m)
    {
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
            {
                Console.Write("{0} ", matrica[i, j]);
            }
            Console.WriteLine();
        }
    }
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());

        int[] josKolikoIma = new int[4];

        string[] prviUnos = Console.ReadLine().Split();
        josKolikoIma[0] = int.Parse(prviUnos[0]);
        josKolikoIma[1] = int.Parse(prviUnos[1]);
        josKolikoIma[2] = int.Parse(prviUnos[2]);
        josKolikoIma[3] = int.Parse(prviUnos[3]);

        int[,] ispisMatrica = new int[n, 4];

        for (int i = 0; i < n; i++)
        {
            string[] s = Console.ReadLine().Split();
            string grupa = s[0];
            int koliko_treba = int.Parse(s[1]);
            switch (grupa)
            {
                case "O":
                    josKolikoIma[0] = josKolikoIma[0] - koliko_treba;
                    if (josKolikoIma[0] < 0)
                    {
                        Console.WriteLine("nemoguce");
                        return;
                    }
                    ispisMatrica[i, 0] = koliko_treba;
                    break;

                case "A":
                    if (josKolikoIma[0] + josKolikoIma[1] < koliko_treba)
                    {
                        Console.WriteLine("nemoguce");
                        return;
                    }
                    else if (josKolikoIma[1] <= koliko_treba)
                    {
                        ispisMatrica[i, 1] = josKolikoIma[1];
                        ispisMatrica[i, 0] = josKolikoIma[0] - (koliko_treba - josKolikoIma[1]);
                        josKolikoIma[0] = josKolikoIma[0] - (koliko_treba - josKolikoIma[1]);
                        josKolikoIma[1] = 0;
                    }
                    else
                    {
                        ispisMatrica[i, 1] = josKolikoIma[1] - koliko_treba;
                        josKolikoIma[1] = josKolikoIma[1] - koliko_treba;
                    }
                    break;

                case "B":
                    if (josKolikoIma[0] + josKolikoIma[2] < koliko_treba)
                    {
                        Console.WriteLine("nemoguce");
                        return;
                    }
                    else if (josKolikoIma[2] <= koliko_treba)
                    {
                        ispisMatrica[i, 2] = koliko_treba - josKolikoIma[2];
                        ispisMatrica[i, 0] = josKolikoIma[0] - (koliko_treba - josKolikoIma[2]);
                        josKolikoIma[0] = josKolikoIma[0] - (koliko_treba - josKolikoIma[2]);
                        josKolikoIma[2] = 0;
                    }
                    else
                    {
                        ispisMatrica[i, 2] = josKolikoIma[2] - koliko_treba;
                        josKolikoIma[2] = josKolikoIma[2] - koliko_treba;
                    }
                    break;

                case "AB":
                    if (josKolikoIma[3] >= koliko_treba)
                    {
                        ispisMatrica[i, 3] = koliko_treba;
                        josKolikoIma[3] = josKolikoIma[3] - koliko_treba;
                    }
                    else
                    {
                        if (josKolikoIma[3] + josKolikoIma[2] >= koliko_treba)
                        {
                            ispisMatrica[i, 3] = josKolikoIma[3];
                            ispisMatrica[i, 2] = koliko_treba - josKolikoIma[3];
                            josKolikoIma[3] = 0;
                            josKolikoIma[2] = josKolikoIma[2] - (koliko_treba - josKolikoIma[3]);
                        }
                        else if (josKolikoIma[3] + josKolikoIma[1] >= koliko_treba)
                        {
                            ispisMatrica[i, 3] = josKolikoIma[3];
                            ispisMatrica[i, 1] = josKolikoIma[1] - (koliko_treba - josKolikoIma[3]);
                            josKolikoIma[3] = 0;
                            josKolikoIma[1] = josKolikoIma[1] - (koliko_treba - josKolikoIma[3]);
                        }
                        else if (josKolikoIma[3] + josKolikoIma[2] + josKolikoIma[1] >= koliko_treba)
                        {
                            ispisMatrica[i, 3] = josKolikoIma[3];
                            ispisMatrica[i, 2] = josKolikoIma[2];
                            koliko_treba = koliko_treba - josKolikoIma[3];
                            koliko_treba = koliko_treba - josKolikoIma[2];
                            josKolikoIma[3] = 0;
                            josKolikoIma[2] = 0;
                            ispisMatrica[i, 1] = josKolikoIma[1] - koliko_treba;
                            josKolikoIma[1] = josKolikoIma[1] - koliko_treba;
                        }
                        else if (josKolikoIma[3] + josKolikoIma[2] + josKolikoIma[1] + josKolikoIma[0] >= koliko_treba)
                        {
                            ispisMatrica[i, 3] = josKolikoIma[3];
                            ispisMatrica[i, 2] = josKolikoIma[2];
                            ispisMatrica[i, 1] = josKolikoIma[1];
                            ispisMatrica[i, 0] = koliko_treba - josKolikoIma[3] - josKolikoIma[2] - josKolikoIma[1];
                            josKolikoIma[0] = josKolikoIma[0] - (koliko_treba - josKolikoIma[3] - josKolikoIma[2] - josKolikoIma[1]);
                            josKolikoIma[3] = 0;
                            josKolikoIma[2] = 0;
                            josKolikoIma[1] = 0;
                        }
                        else
                        {
                            Console.WriteLine("nemoguce");
                            return;
                        }
                    }
                    break;
            }
        }
        Console.WriteLine("moguce");
        ispisiMatricu<int>(ispisMatrica, n, 4);

    }
}