#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cerr.tie(NULL);
    cout.tie(NULL);

    //____________________________________________
    /// ulaz:
    int n;
    cin >> n;
    int zalihe[4];
    for(int i = 0; i < 4; i++) cin >> zalihe[i];

    int ispis[n][4];
    pair<string, int> ljudi[n];
    bool moguce = true;
    for(int i = 0; i < n; i++)
        cin >> ljudi[i].first >> ljudi[i].second;
    //____________________________________________
    /// 0 prima 0 i AB daje AB:
    for(int i = 0; i < n; i++)
    {
        ispis[i][0] = ispis[i][1] = ispis[i][2] = ispis[i][3] = 0;
        if(ljudi[i].first == "O")
        {
            if(zalihe[0] < ljudi[i].second)
            {
                moguce = false;
                break;
            }
            else
            {
                zalihe[0] -= ljudi[i].second;
                ispis[i][0] = ljudi[i].second;
                ljudi[i].second = 0;
            }
        }
        else if(ljudi[i].first == "AB")
        {
            if(zalihe[3] < ljudi[i].second)
            {
                ispis[i][3] = zalihe[3];
                ljudi[i].second -= zalihe[3];
                zalihe[3] = 0;
            }
            else
            {
                zalihe[3] -= ljudi[i].second;
                ispis[i][3] = ljudi[i].second;
                ljudi[i].second = 0;
            }
        }
    }
    //____________________________________________
    /// A prima A i B prima B:
    if(moguce)
    {
        for(int i = 0; i < n; i++)
        {
            if(ljudi[i].first == "A")
            {
                if(zalihe[1] >= ljudi[i].second)
                {
                    // dobija toliko koliko mu treba
                    zalihe[1] -= ljudi[i].second;
                    ispis[i][1] = ljudi[i].second;
                    ljudi[i].second = 0;
                }
                else
                {
                    // dobija toliko koliko ima i ostalo od grupe O ako ima
                    ispis[i][1] = zalihe[1];
                    ljudi[i].second -= zalihe[1];
                    zalihe[1] = 0;
                    if(zalihe[0] < ljudi[i].second)
                    {
                        moguce = false;
                        break;
                    }
                    else
                    {
                        zalihe[0] -= ljudi[i].second;
                        ispis[i][0] = ljudi[i].second;
                        ljudi[i].second = 0;
                    }
                }
            }
            else if(ljudi[i].first == "B")
            {
                if(zalihe[2] >= ljudi[i].second)
                {
                    // dobija toliko koliko mu treba
                    zalihe[2] -= ljudi[i].second;
                    ispis[i][2] = ljudi[i].second;
                    ljudi[i].second = 0;
                }
                else
                {
                    // dobija toliko koliko ima i ostalo od grupe O ako ima
                    ispis[i][2] = zalihe[2];
                    ljudi[i].second -= zalihe[2];
                    zalihe[2] = 0;
                    if(zalihe[0] < ljudi[i].second)
                    {
                        moguce = false;
                        break;
                    }
                    else
                    {
                        zalihe[0] -= ljudi[i].second;
                        ispis[i][0] = ljudi[i].second;
                        ljudi[i].second = 0;
                    }
                }
            }
        }
    }
    //____________________________________________
    /// AB prima bilo sta sto ima:
    for(int i = 0; i < n; i++)
    {
        if(ljudi[i].first == "AB")
        {
            if(ljudi[i].second > 0)
            {
                if(zalihe[0] >= ljudi[i].second)
                {
                    zalihe[0] -= ljudi[i].second;
                    ispis[i][0] = ljudi[i].second;
                    ljudi[i].second = 0;
                }
                else
                {
                    ispis[i][0] = zalihe[0];
                    ljudi[i].second -= zalihe[0];
                    zalihe[0] = 0;
                    if(zalihe[1] >= ljudi[i].second)
                    {
                        zalihe[1] -= ljudi[i].second;
                        ispis[i][1] = ljudi[i].second;
                        ljudi[i].second = 0;
                    }
                    else
                    {
                        ispis[i][1] = zalihe[1];
                        ljudi[i].second -= zalihe[1];
                        zalihe[1] = 0;
                        if(zalihe[2] >= ljudi[i].second)
                        {
                            zalihe[2] -= ljudi[i].second;
                            ispis[i][2] = ljudi[i].second;
                            ljudi[i].second = 0;
                        }
                        else
                        {
                            moguce = false;
                            break;
                        }
                    }
                }
            }
        }
    }
    //____________________________________________
    /// ispis:
    if(moguce)
    {
        cout << "moguce" << endl;
        for(int i = 0; i < n; i++)
            cout << ispis[i][0] << " " << ispis[i][1] << " " << ispis[i][2] << " " << ispis[i][3] << endl;
    }
    else
    {
        cout << "nemoguce" << endl;
    }
    return 0;
}