//学习多项式加法的思想
//多项式没有必要存储,只需要存储结果 res[指数]=系数
//此处因为两多项式不应存在结果中,所以还是需要存一下第一个多项式
//第二个多项式在读入时顺便就计算了
#include <iostream>
#include <vector>
#define MAXN 2010//注意因为指数相加,结果的下标最大可以取到2000
using namespace std;
double coefficients[MAXN];
int a[MAXN];
double b[MAXN];
int main(){
int k1,k2;
scanf("%d",&k1);
int tmpe;
double tmpc;
for(int i=0;i<k1;i++){
scanf("%d %lf",&a[i],&b[i]);
}
scanf("%d",&k2);
for(int i=0;i<k2;i++){
scanf("%d %lf",&tmpe,&tmpc);
for(int i=0;i<k1;i++){
coefficients[tmpe+a[i]]+=(tmpc*b[i]);
}
}
int cnt=0;
for(int i=0;i<MAXN;i++){
if(coefficients[i]!=0){
cnt++;
}
}
printf("%d",cnt);
for(int i=MAXN-1;i>=0;i--){
if(coefficients[i]!=0){
printf(" %d %.1f",i,coefficients[i]);
}
}
return 0;
}
//柳姐解法
#include <iostream>
using namespace std;
int main() {
int n1, n2, a, cnt = 0;
scanf("%d", &n1);
double b, arr[1001] = {0.0}, ans[2001] = {0.0};
for(int i = 0; i < n1; i++) {
scanf("%d %lf", &a, &b);
arr[a] = b;
}
scanf("%d", &n2);
for(int i = 0; i < n2; i++) {
scanf("%d %lf", &a, &b);
for(int j = 0; j < 1001; j++){
ans[j + a] += arr[j] * b;//如果arr[]==0,则ans[]仍然还是0,所以不会多乘
//因此arr没必要存两个数组,可以节省一个下标的空间
}
}
for(int i = 2000; i >= 0; i--){
if(ans[i] != 0.0) cnt++;
}
printf("%d", cnt);
for(int i = 2000; i >= 0; i--){
if(ans[i] != 0.0) printf(" %d %.1f", i, ans[i]);
}
return 0;
}