#include<cstdio>
using namespace std;

#define MOD 1000000007
typedef long long LL;

struct node{
	char c;
	LL l;
	};

node a[2005],b[1005],c[1005],d[2005];
int na,nb,nc,nd;

int main(){
	char e;
	int i,j,k;
	while(scanf(" %c",&e)&&e!='$'){
		a[na].c=e;
		scanf("%lld",&a[na++].l);
		}
	while(scanf(" %c",&e)&&e!='$'){
		b[nb].c=e;
		scanf("%lld",&b[nb++].l);
		}
	while(scanf(" %c",&e)&&e!='$'){
		c[nc].c=e;
		scanf("%lld",&c[nc++].l);
		}
	for(i=0;i<=na-nb;i++){
		if(a[i].c!=b[0].c||a[i].l<b[0].l)	continue;
		if(nb==1){
			for(nd=0;nd<i;nd++)
				d[nd]=a[nd];
			for(k=0;k<nc;k++)
				d[nd++]=c[k];
			if(a[i].l>b[0].l){
				d[nd]=a[i];
				d[nd++].l-=b[0].l;
				}
			for(k=i+1;k<na;k++)
				d[nd++]=a[k];
				break;
				}
			else{
				for(j=1;j<nb;j++){
					if(a[i+j].c!=b[j].c||a[i+j].l!=b[j].l)	break;
					}
				if(j>=nb-1){
					if(a[i+nb-1].c==b[nb-1].c&&a[i+nb-1].l>=b[nb-1].l){
						for(nd=0;nd<i;nd++)
							d[nd]=a[nd];
						if(a[i].l>b[0].l){
							d[nd]=a[i];
							d[nd++].l-=b[0].l;
							}
						for(k=0;k<nc;k++)
							d[nd++]=c[k];
						if(a[i+nb-1].l>b[nb-1].l){
							d[nd]=a[i+nb-1];
							d[nd++].l-=b[nb-1].l;
							}
						for(k=i+nb;k<na;k++)
							d[nd++]=a[k];
						break;
						}
					}
				}
			}
		if(i<=na-nb){
		na=0;
		a[na]=d[0];
		for(i=1;i<nd;i++){
			if(d[i].c==a[na].c)
				a[na].l+=d[i].l;
			else
				a[++na]=d[i];
			}
		na++;
		}
	for(i=0;i<na;i++)
		printf("%c %lld ",a[i].c,a[i].l);
	printf("$\n");
	return 0;
	}