#include <iostream>
#include <string>

using namespace std;
struct krv
{
	string g;
	int ko;
};
int main()
{
	bool lp=true;
	int n , br=0;
	int A,B,O,AB;
	cin>>n>>O>>A>>B>>AB;
	string s;
	krv k[n+1],a[n];
	int x[n][4];
	for(int i=0;i<n;i++)
	for(int j=0;j<4;j++)
	x[i][j]=0;
	for(int i=0;i<=n;i++)
	{
	k[i].g="";
	k[i].ko=0;
	getline(cin,s);
	
	for(int j=0;j<s.size();j++)
	if(s.at(j)>='A' and s.at(j)<='Z')
	k[i].g.push_back(s.at(j));
	else if(s.at(j)>='0' and s.at(j)<='9')
	k[i].ko=k[i].ko*10+(s.at(j)-'0');
   }
for(int i=1;i<=n;i++)
{
a[i-1]=k[i];
}
for(int i=0;i<n;i++)
{
	if(a[i].g.compare("O")==0)
	{
		
		x[i][0]=a[i].ko;
		O-=a[i].ko;
	
	if(O<0)
	{
	lp=false;
	break;
}
}
}
if(lp==false)
{
	cout<<"nemoguce";
}
else
{
	for(int i=0;i<n;i++)
	{
		br=0;
		if(a[i].g=="A")
		{
			x[i][1]=min(A,a[i].ko);
			br+=x[i][1];
			A-=br;
			if(a[i].ko>br)
			{
				x[i][0]=a[i].ko-br;
				O-=x[i][0];
				if(O<0)
				{
					lp=false;
					break;
				}
			}
		}
		if(a[i].g=="B")
		{
			x[i][2]=min(B,a[i].ko);
			br+=x[i][2];
			B-=br;
			if(a[i].ko>br)
			{
				x[i][0]=a[i].ko-br;
				O-=x[i][0];
				if(O<0)
				{
					lp=false;
					break;
				}
			}
		}
	}
	if(lp==false)
	cout<<"nemoguce";
	else
	{
	for(int i=0;i<n;i++)
	{
		br=0;
		if(a[i].g=="AB")
		{
			x[i][3]=min(AB,a[i].ko);
			br+=x[i][3];
			AB-=br;
			if(a[i].ko>br)
			{
				x[i][2]=min(B,a[i].ko-br);
				br+=x[i][2];
				B-=x[i][2];
			if(a[i].ko>br)
			{
				x[i][1]=min(A,a[i].ko-br);
				br+=x[i][1];
				A-=x[i][1];
				if(a[i].ko>br)
				{
				x[i][0]=a[i].ko-br;
				O-=x[i][0];
				if(O<0)
				{
					lp=false;
					break;
				}
			}
			}
		}
	}
	}
	if(lp==false)
	cout<<"nemoguce";
	else
	{
		cout<<"moguce"<<endl;
		for(int i=0;i<n;i++)
		{
		for(int j=0;j<4;j++)
		cout<<x[i][j]<<" ";
		cout<<endl;
	}
	}
}
}
}