#include<stdio.h>
#include<string.h>
typedef struct
{
	int xishu;
	int zhishu;
}elemtype;
int main()
{
	elemtype a[100],b[100],c[200];
	int lena,lenb,lenc;
	char s1[101],s2[101],*t;
	int i,j;
	while(gets(s1) && strlen(s1))
	{
		gets(s2);
		lena=lenb=lenc=0;
		t=strtok(s1," \n\t");
		while(t)
		{
			sscanf(t,"%d",&a[lena].xishu);
			t=strtok(NULL," \n\t");
			sscanf(t,"%d",&a[lena].zhishu);
			t=strtok(NULL," \t\n");
			lena++;
		}
		t=strtok(s2," \n\t");
		while(t)
		{
			sscanf(t,"%d",&b[lenb].xishu);
			t=strtok(NULL," \n\t");
			sscanf(t,"%d",&b[lenb].zhishu);
			t=strtok(NULL," \t\n");
			lenb++;
		}
		i=j=0;
	while(i<lena && j<lenb)
	{
		if(a[i].zhishu>b[j].zhishu)
		{
			c[lenc].zhishu=a[i].zhishu;
			c[lenc].xishu=a[i].xishu;
			++i;++lenc;
		}
		else if(a[i].zhishu<b[j].zhishu)
		{
			c[lenc].zhishu=b[j].zhishu;
			c[lenc].xishu=b[j].xishu;
			++j;++lenc;
		}
		else if(a[i].zhishu==b[j].zhishu)
		{
			if(a[i].xishu+b[j].xishu)
			{
			c[lenc].zhishu=a[i].zhishu;
			c[lenc].xishu=a[i].xishu+b[j].xishu;
			++lenc;
			}
			++i;++j;
		}
	}
	while(i<lena)
	{
		c[lenc].xishu=a[i].xishu;
		c[lenc].zhishu=a[i].zhishu;
		++lenc;
		++i;
	}
	while(j<lenb)
	{
		c[lenc].xishu=b[j].xishu;
		c[lenc].zhishu=b[j].zhishu;
		++lenc;
		++j;
	}
	for(i=0;i<lenc;i++)
	    printf("%d %d ",c[i].xishu,c[i].zhishu);
	printf("\n");
	}
	return 0;
}
/**************************************************************
	Problem: 2141
	User: admin
	Language: C
	Result: Accepted
	Time:9 ms
	Memory:1144 kb
****************************************************************/