physics

时间限制:30s      空间限制:512MB

题目描述

现在有一条直线,直线上有n个原子核,每个原子核都有其各自的位置,原子序数和速度。经过一段时间之后,可能存在两个原子核互相碰撞。对于碰撞有两种可能,如果两个原子核的序数分别为a,b 且 Ma+Mb>=Ma+b[Mi表示i号原子的质量],则他们两个就会发生核聚变(只满足动量守恒且两原子核先达到共同速度再进行聚变),聚变时会放出能量,放出的能量就是质量亏损的能量,我们假设所有的能量都转化为了动能,聚变后速度的方向与原来两个原子核的共同速度方向相同。但是如果Ma+Mb<Ma+b则他们就会发生弹性碰撞(动量和动能守恒)。[公式见注意事项]


输入格式

第一行一个整数m表示(1..m的原子的质量已知)
接下来m个实数 表示M1..m
接下来一个数c表示光速。
接下来两个数n,T表示该直线上有n个原子核,由T次询问。
接下来n行每行3个数 表示原子核的序数,位置,和初速度。
接下来T行表示T个询问
1 a b v 表示在b位置新建一个原子核序数为a的原子速度为v
2 a k删除位置第k小的原子序数为a的原子核
3 询问并进行下一次碰撞同时输出碰撞后的两个或一个原子核的三个信息
4 a b 删除位置最小的原子序数从a到b的原子核


输出格式

接下来k行每行六或三个实数表示原子核的序数,位置和速度。


样例输入

10
2 3 4 5 6 7 8 13 15 20
3
3 2
6 1 0
1 2 0
1 3 -3
3
3

样例输出

2 2.00000000 -3.00000000
6 1.00000000 -1.80000000 2 1.00000000 1.20000000 

提示

T<=2*10^5,N<=100000,所有的数据满足m<=105 其余的数据属于[-109..109],误差小于1e-5则答案正确。


题目来源

没有写明来源