#include <iostream>
using namespace std;
struct Infor
{
int coef;
int exp;
struct Infor *next;
};
int main()
{
int i = 0, j, k;
char word;
struct Infor *p1 = new struct Infor;
struct Infor *p2 = p1;
struct Infor *p = NULL;
struct Infor *p3 = NULL, *p4 = NULL;
p1->next = NULL;
freopen("1.txt", "r", stdin);
cin >> word;
p = new struct Infor;
cin >> p->coef >> p->exp;
while (0 != p->coef)
{
p2->next = p;
p2 = p;
p->next = NULL;
p = new struct Infor;
cin >> p->coef >> p->exp;
}
cin >> word;
p3 = new struct Infor;
cin >> p3->coef >> p3->exp;
while (0 != p3->coef)
{
p = p1->next;
while(NULL != p && p->exp != p3->exp)
{
p = p->next;
}
if (NULL == p) //A 中没有 B 的项就直接加入
{
p4 = new struct Infor;
p2->next = p4;
p4->next = NULL;
p2 = p4;
p2->coef = p3->coef;
p2->exp = p3->exp;
}
else //执行加法运算
{
p->coef += p3->coef;
}
p3 = new struct Infor;
cin >> p3->coef >> p3->exp;
}
int temp = 0, MaxSize = 0;
int nArray[100] = {0}, nArray2[100] = {0};
p = p1->next;
for (; NULL != p; p = p->next)
{
if (p->coef != 0)
{
nArray[MaxSize] = p->coef;
nArray2[MaxSize] = p->exp;
MaxSize++;
}
}
for (i = 0; i < MaxSize; i++)
{
k = i;
for (j = k+1; j < MaxSize; j++)
{
if (nArray2[i] > nArray2[j])
{
temp = nArray[i];
nArray[i] = nArray[j];
nArray[j] = temp;
temp = nArray2[i];
nArray2[i] = nArray2[j];
nArray2[j] = temp;
}
}
}
cin >> word;
for (i = 0; i < MaxSize; i++)
{
cout << nArray[i] << " " << nArray2[i] << endl;
}
return 0;
}