#include
#include<math.h>
using namespace std;
const int maxn=10005; // 定义常量 maxn 为 10005
float a[maxn]; // 定义浮点数组 a,大小为 maxn
int b1[maxn]; // 定义整型数组 b1,大小为 maxn
float b2[maxn]; // 定义浮点数组 b2,大小为 maxn
float c[maxn]; // 定义浮点数组 c,大小为 maxn
int main()
{
int n1,first; // 定义整型变量 n1 和 first
cin>>n1; // 输入 n1 的值
for(int i=0;i<n1;i++) // 循环 n1 次
{
int tmp; // 定义整型变量 tmp
cin>>tmp; // 输入 tmp 的值
cin>>a[tmp]; // 输入 a[tmp] 的值
if(!i) first=tmp; // 如果 i 为 0,则将 tmp 的值赋给 first
}
int n2; // 定义整型变量 n2
cin>>n2; // 输入 n2 的值
for(int i=0;i<n2;i++) // 循环 n2 次
cin>>b1[i]>>b2[i]; // 输入 b1[i] 和 b2[i] 的值
for(int i=first;i>=b1[0];i--) // 循环 i 从 first 到 b1[0]
{
int tmp=i-b1[0]; // 定义整型变量 tmp 为 i-b1[0]
c[tmp]=a[i]/b2[0]; // 计算 c[tmp] 的值
for(int j=0;j<n2;j++) // 循环 n2 次
a[tmp+b1[j]]-=c[tmp]*b2[j]; // 计算 a[tmp+b1[j]] 的值
}
int cnt1=0,cnt2=0; // 定义整型变量 cnt1 和 cnt2,初始值为 0
for(int i=first;i>=0;i--) // 循环 i 从 first 到 0
{
if(fabs(c[i])>=0.05) cnt1++; // 如果 fabs(c[i])>=0.05,则 cnt1 加 1
if(fabs(a[i])>=0.05) cnt2++; // 如果 fabs(a[i])>=0.05,则 cnt2 加 1
}
cout<<cnt1; // 输出 cnt1 的值
for(int i=first;i>=0;i--) // 循环 i 从 first 到 0
{
if(fabs(c[i])>=0.05) printf(' %d %.1f',i,c[i]); // 如果 fabs(c[i])>=0.05,则输出 i 和 c[i] 的值
}
if(!cnt1) cout<<' 0 0.0'; // 如果 cnt1 为 0,则输出' 0 0.0'
cout<<endl; // 输出换行
cout<<cnt2; // 输出 cnt2 的值
for(int i=first;i>=0;i--) // 循环 i 从 first 到 0
{
if(fabs(a[i])>=0.05) printf(' %d %.1f',i,a[i]); // 如果 fabs(a[i])>=0.05,则输出 i 和 a[i] 的值
}
if(!cnt2) cout<<' 0 0.0'; // 如果 cnt2 为 0,则输出' 0 0.0'
}