#include <bits/stdc++.h>

using namespace std;

bool rasporedi(int zalihe[], char grupa[][2], int potrebno[], int transfuzija[][4], int n)
{
    int ab[n];
    for(int i = 0; i < n; i++)
        ab[i] = -1;
    for(int i = 0, j = 0; i < n; i++)
    {
        if(strcmp(grupa[i], "O") == 0)
        {
            if(zalihe[0] < potrebno[i])
                return false;
            transfuzija[i][0] = potrebno[i];
            zalihe[0] -= potrebno[i];
        }
        if(strcmp(grupa[i], "A") == 0)
        {
            if(zalihe[1] < potrebno[i])
            {
                transfuzija[i][1] = zalihe[1];
                potrebno[i] -= zalihe[1];
                zalihe[1] = 0;
                if(zalihe[0] < potrebno[i])
                    return false;
                transfuzija[i][0] = potrebno[i];
                zalihe[0] -= potrebno[i];
            }
            else
            {
                transfuzija[i][1] = potrebno[i];
                zalihe[1] -= potrebno[i];
            }
        }
        if(strcmp(grupa[i], "B") == 0)
        {
            if(zalihe[2] < potrebno[i])
            {
                transfuzija[i][2] = zalihe[2];
                potrebno[i] -= zalihe[2];
                zalihe[2] = 0;
                if(zalihe[0] < potrebno[i])
                    return false;
                transfuzija[i][0] = potrebno[i];
                zalihe[0] -= potrebno[i];
            }
            else
            {
                transfuzija[i][2] = potrebno[i];
                zalihe[2] -= potrebno[i];
            }
        }
        if(strcmp(grupa[i], "AB") == 0)
            ab[j] = i;
    }
    for(int j = 0; j < n && ab[j] != -1; j++)
    {
        int i = ab[j];
        for(int k = 3; k > 0; k--)
        {
            if(potrebno[i] <= zalihe[k])
            {
                transfuzija[i][k] = potrebno[i];
                zalihe[k] -= potrebno[i];
                potrebno[i] = 0;
            }
            else
            {
                transfuzija[i][k] = zalihe[k];
                potrebno[i] -= zalihe[k];
                zalihe[k] = 0;
            }
        }
        if(zalihe[0] < potrebno[i])
                return false;
        transfuzija[i][0] = potrebno[i];
        zalihe[0] -= potrebno[i];
    }
    return true;
}

int main()
{
    int n, zalihe[4];
    cin >> n;
    for(int i = 0; i < 4; i++)
        cin >> zalihe[i];
    char grupa[n][2];
    int potrebno[n];
    for(int i = 0; i < n; i++)
        cin >> grupa[i] >> potrebno[i];
    int transfuzija[n][4];
    memset(transfuzija, 0, sizeof(transfuzija));
    if(rasporedi(zalihe, grupa, potrebno, transfuzija, n))
    {
        cout << "moguce" << endl;
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < 4; j++)
                cout << transfuzija[i][j] << " ";
            cout << endl;
        }
    }
    else cout << "nemoguce";
    return 0;
}