#include <stdio.h>
#include <stdlib.h>
typedef struct{
int exponents;
float coexponents;
}Elemtype;
typedef struct ListNode{
Elemtype data;
struct ListNode *next;
}*LinkList, LinkNode;
void CreateList(LinkList &L)
{
int n, i, j;
scanf("%d", &n);
L = (LinkList)malloc(sizeof(LinkNode));
LinkNode *p, *s;
p = L;
for(i=0;i<n;i++){
s = (LinkNode*)malloc(sizeof(LinkNode));
scanf("%d%f", &s->data.exponents, &s->data.coexponents);
p->next = s;
p = s;
}
p->next = NULL;
}
void Add(LinkList L1, LinkList L2, LinkList &L3, int &nums)
{
LinkNode *p, *q, *s;
int count = 0;
p = L1->next;
q = L2->next;
L3 = (LinkList)malloc(sizeof(LinkNode));
s = L3;
while(p&&q){
if(p->data.exponents > q->data.exponents){
s->next = p;
s = s->next;
p = p->next;
count++;
}
else if(p->data.exponents == q->data.exponents){
p->data.coexponents += q->data.coexponents;
if(p->data.coexponents == 0){
p = p->next;
q = q->next;
continue;
}
s->next = p;
s = s->next;
p = p->next;
q = q->next;
count++;
}
else{
s->next = q;
s = s->next;
q = q->next;
count++;
}
}
while(p){
s->next = p;
s = s->next;
p = p->next;
count++;
}
while(q){
s->next = q;
s = s->next;
q = q->next;
count++;
}
nums = count;
s->next = NULL;
}
void ExportList(LinkList L, int nums)
{
LinkNode *p;
p = L->next;
printf("%d", nums);
while(p){
printf(" %d %.1f", p->data.exponents, p->data.coexponents);
p = p->next;
}
}
int main(void)
{
LinkList L1, L2, L3;
int n;
CreateList(L1);
CreateList(L2);
Add(L1, L2, L3, n);
ExportList(L3, n);
return 0;
}