using System;

namespace tansfuzija
{
    class Program
    {
        static int index(pacijent[] p,string s)
        {
            int n = p.Length;
            for (int i = 0; i < n; i++)
            {
                if(p[i].ime==s)
                {
                    return i;
                }
            }
            return -1;
        }
        struct pacijent
        {
            public string ime;
            public int jedinica;
        }
        static void Main(string[] args)
        {
            int o, a, b, ab, n;
            n = int.Parse(Console.ReadLine());
            string s;
            s = Console.ReadLine();
            string[] str = s.Split();
            o = int.Parse(str[0]);
            a = int.Parse(str[1]);
            b = int.Parse(str[2]);
            ab = int.Parse(str[3]);
            pacijent[] p = new pacijent[n];

            for (int i = 0; i < n; i++)
            {
                pacijent pa;
                s = Console.ReadLine();
                str = s.Split();
                pa.ime = str[0];
                pa.jedinica = int.Parse(str[1]);
                p[i] = pa;
            }
            string j="moguce";
            int[,] k = new int[n, 4];
            if(index(p,"O")!=-1)
            {
                
                int l = index(p, "O");
                Console.WriteLine(l);
                int v = o - p[l].jedinica;
                Console.WriteLine(v);
                if (v > 0) { k[l, 0] = p[l].jedinica;o = v; }
                else { j = "nemoguce";  }
            }
            if (index(p,"A")!=-1 && j=="moguce")
            {
                int l = index(p, "A");
                int v = a - p[l].jedinica;
                
                if (v < 0)
                {
                    int g =p[l].jedinica-a;
                    int m = o - g;
                   
                    if (m < 0) { j = "nemoguce"; }
                    else { o = m; Console.WriteLine(m); a = 0; k[l, 0] = g;k[l, 1] = a; }
                }
                else { a = v;  k[l, 1] = p[l].jedinica; }
            }
            if (index(p, "B") != -1 && j == "moguce")
            {
                int l = index(p, "B");
                int v = b - p[l].jedinica;

                if (v < 0)
                {
                    int g = p[l].jedinica - b;
                    int m = o - g;
                    if (m < 0) { j = "nemoguce"; }
                    else { o = m;b = 0; k[l, 0] = g; k[l, 2] = b; }
                }
                else { b = v; k[l, 2] = p[l].jedinica; }
            }
            if(index(p, "AB") != -1 && j == "moguce")
            {
                int l = index(p, "AB");
               
                
                    
            }
            if (j == "moguce")
            {
                Console.WriteLine("moguce");
                for (int i = 0; i < n; i++)
                {
                    for (int h = 0; h < 4; h++)
                    {
                        Console.Write(k[i, h] + " ");
                    }
                    Console.WriteLine();
                }
            }
            else { Console.WriteLine("nemoguce"); }
           
        }
    }
}