#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"