#include <bits/stdc++.h>
using namespace std;
int n,m;
struct Node
{
int expn;
int coef;
Node *next;
Node(){}
Node(int key1,int key2):expn(key1),coef(key2),next(NULL){}
};
void init(Node* &l,int n)
{
Node *p=l;
for(int i=1;i<=n;i++)
{
int expn,coef;
cin>>coef>>expn;
Node *now=new Node(expn,coef);
while(p->next && (p->next->expn < now->expn))
{
p=p->next;
}
if(p->next&&p->next->expn==now->expn) //如果指数相同
{
p->next->coef+=now->coef;
}
else //如果指数不同
{
now->next=p->next;
p->next=now;
}
}
}
//实现链表的二重for循环
Node* mult(Node* &la,Node* &lb)
{
//定义答案链表
Node *h=new Node();
h->next=NULL;
//两重循环实现la链表与lb链表的相乘
Node *p1=la->next,*p2=lb->next;
for(Node *p1=la->next;p1;p1=p1->next) //枚举第一项
for(Node *p2=lb->next;p2;p2=p2->next) //枚举第二项
{
int ex1,ex2;
int cep1,cep2;
ex1=p1->expn;
cep1=p1->coef;
ex2=p2->expn;
cep2=p2->coef;
//cout<<ex1<<" "<<cep1<<"---"<<ex2<<" "<<cep2<<endl;
//实现两项相乘合并为一个项,把该项存起来
int ex=ex1+ex2; //指数相加
int cep=cep1*cep2; //系数相乘
Node* now=new Node(ex,cep);
//两项已经合并为一项了,看看放在答案链表的哪一项
Node *p=h; //找要找节点的前一个节点 ,所以不是 p=h->next
while(p->next&&p->next->expn>now->expn)
{
p=p->next;
}
if(p->next&&p->next->expn==now->expn)
{
p->next->coef+=now->coef;
}
else
{
now->next=p->next;
p->next=now;
}
}
return h;
}
void traverse(Node *h)
{
for(Node *p=h->next;p;p=p->next)
{
cout<<p->coef<<" "<<p->expn<<" ";
}
cout<<endl;
}
int main()
{
Node *la=new Node(),*lb=new Node();
la->next=NULL;
lb->next=NULL;
cin>>n;
init(la,n);
cin>>m;
init(lb,m);
Node *h=mult(la,lb);
traverse(h);
return 0;
}