#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	
	int n;
	cin >> n; 
	int zalihe[n];
	cin >> zalihe[0] >> zalihe[1] >> zalihe[2] >>zalihe[3];
	
	int krvne_grupe[n];
	int potreba[n];
	int potreba_po_grupama[4] = {0};
	int razvrstane_zalihe[4][4] = {0};
	int matrica_raspodele[n][4] = {0};
	int cnt[4] = {0};
	
	for(int i = 0; i < n; ++i)
	{
		string kg;
		cin >> kg;
		cin >> potreba[i];
		if(kg == "O")
			krvne_grupe[i] = 0;
		else if(kg == "A")
			krvne_grupe[i] = 1;
		else if(kg == "B")
			krvne_grupe[i] = 2;
		else
			krvne_grupe[i] = 3;
			
		potreba_po_grupama[krvne_grupe[i]]+=potreba[i];
	}
	
	for(int i = 0; i < 4; ++i)
	{
		razvrstane_zalihe[i][i] = min(potreba_po_grupama[i], zalihe[i]);
		zalihe[i]-=potreba_po_grupama[i];
	}
	
	for(int i = 3; i >= 0; --i)
	{
		int pomoc = i-1;
		while(zalihe[i] < 0)
		{
			if(zalihe[pomoc] <= 0)--pomoc;
			if(pomoc < 0)
			{
				cout << "nemoguce" <<endl;
				return 0;
			}
			
			razvrstane_zalihe[i][pomoc]+=zalihe[pomoc];
			zalihe[i]+=zalihe[pomoc];
			zalihe[pomoc] = 0;
		}
	}
	
	for(int i = 0; i < n; ++i)
	{
		int kg = krvne_grupe[i];
		int p = potreba[i];
		
		while(p > 0)
		{
			if(razvrstane_zalihe[kg][cnt[kg]] == 0) ++cnt[kg];
			matrica_raspodele[i][cnt[kg]] = min(razvrstane_zalihe[kg][cnt[kg]], p);
			p-=matrica_raspodele[i][cnt[kg]];
			razvrstane_zalihe[kg][cnt[kg]]-=matrica_raspodele[i][cnt[kg]];
		}
	}
	
	for(int i = 0; i < n; ++i)
	{
		for(int j = 0; j< 4; ++j)
			cout << matrica_raspodele[i][j] <<" ";
		cout << endl;
	}
	
}