#include <iostream>
#include <list>
#include <string>

using namespace std;

struct pacijent
{
	int index, krv;
	pacijent(){}
	pacijent(int index, int krv):index(index),krv(krv){}
};

int main()
{
	int n;
	cin>>n;
    int zalihe[4];
    cin>>zalihe[0]>>zalihe[1]>>zalihe[2]>>zalihe[3];
    
    //kategorija, jedinice krvi 
    list<pacijent> o,a,b,ab;
	//o,a,b,ab
	int dodele[n][4];
    
    string s;
	int temp;
    for(int i=0;i<n;i++)
    {
    	cin>>s;
    	cin>>temp;
    	
    	if(s == "O")
    		o.push_back(pacijent(i, temp));
    	else if(s == "A")
    		a.push_back(pacijent(i, temp));
    	else if(s == "B")
    		b.push_back(pacijent(i, temp));
    	else if(s == "AB")
    		ab.push_back(pacijent(i, temp));
    		
		dodele[i][0]=dodele[i][1]=dodele[i][2]=dodele[i][3]=0;
	}
	

//O GRUPA

	for(auto p:o)
	{
		zalihe[0] -= p.krv;
		dodele[p.index][0] += p.krv;
		//nije bilo dovoljno zaliha krvi grupe o.
		if(zalihe[0] < 0)
		{
			cout<<"nemoguce";
			return 0;
		}
	}

//A GRUPA

	for(auto p:a)
	{
		//prvo se trose zalihe a krvi
		if(zalihe[1]>=p.krv)
		{
			zalihe[1] -= p.krv;
			dodele[p.index][1] += p.krv;
		}
		else
		{
			//potrosi preostale zalihe krvi a
			dodele[p.index][1] += zalihe[1];
			zalihe[1] = 0;
			//uzmi ostatak iz zaliha krvi o
			zalihe[0] -= p.krv - dodele[p.index][1];
			dodele[p.index][0] += p.krv - dodele[p.index][1];
		}
		//nije bilo dovoljno zaliha krvi grupe o.
		if(zalihe[0] < 0)
		{
			cout<<"nemoguce";
			return 0;
		}
	}

//B GRUPA

	for(auto p:b)
	{
		//prvo se trose zalihe b krvi
		if(zalihe[2]>=p.krv)
		{
			zalihe[2] -= p.krv;
			dodele[p.index][2] += p.krv;
		}
		else
		{
			//potrosi preostale zalihe krvi b
			dodele[p.index][2] += zalihe[2];
			zalihe[2] = 0;
			//uzmi ostatak iz zaliha krvi o
			zalihe[0] -= p.krv - dodele[p.index][2];
			dodele[p.index][0] += p.krv - dodele[p.index][2];
		}
		//nije bilo dovoljno zaliha krvi grupe o.
		if(zalihe[0] < 0)
		{
			cout<<"nemoguce";
			return 0;
		}
	}
	
//AB GRUPA

	for(auto p:ab)
	{
		int dodela=0;
		for(int grupa = 0;grupa<4;grupa++)
		{
			if(zalihe[grupa]>=p.krv - dodela)
			{
				zalihe[grupa] -= p.krv - dodela;
				dodele[p.index][grupa] += p.krv - dodela;
				dodela += p.krv - dodela;
				continue;
			}
			else
			{
				dodele[p.index][grupa] += zalihe[grupa];
				dodela += zalihe[grupa];
				zalihe[grupa] = 0;
			}
		}
		
		//nije bilo dovoljno zaliha krvi.
		if(dodela < p.krv)
		{
			cout<<"nemoguce";
			return 0;
		}
	}
	
	cout<<"moguce\n";
	for(int i=0;i<n;i++)
		cout << dodele[i][0] << " " << dodele[i][1] << " " << dodele[i][2] << " " << dodele[i][3] << endl;
	
    return 0;
}