桃花村
题号:NC218051
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

桃花村起火了。

根据村民提供的信息, 间村舍都等距离排在一排,我们可以抽象的看作是数轴上连续的一排点,并且将其从左至右编号为 ~ 。每间村舍都有一个燃烧增剧度

村民会告诉你第一间被点燃的村舍的编号 ,每间村舍从被点燃的那一刻起计算,每过一小时火势就会向左右两边村舍蔓延,旁边的村舍就会被点燃,当然,已经被点燃的房屋不会被重复点燃。

同时每间被点燃的村舍 每隔一小时燃烧剧烈程度 都会加上 (刚被点燃的时候燃烧剧烈程度为0)。

村长预测到村舍甚至有可能会因为剧烈燃烧而爆炸,会给出 个信息。信息的形式分为两种:

  • ,接下来两个整数 就表示在距离第一间村舍着火后的 小时后,所有燃烧剧烈程度 等于 的房子都会爆炸,如果不存在满足条件的屋舍就不会爆炸。

  • ,接下来一个整数 就表示村长询问你,在第一间村舍着火后的 小时内(包含)一共发生了多少次爆炸(任意屋舍爆炸一次都算爆炸)。

对于所有 的信息你都要给出回答,并且每个回答输出一行一个整数表示屋舍爆炸的次数。

特别注意:

第一间屋舍 被点燃时算是第 小时,它会在第 小时的时候点燃旁边两间房屋并且自己的燃烧剧烈程度 加上 。房屋爆炸后仍然会存在,可能接下来它会继续爆炸!

保证给出信息 单调不减,同时假若有两个信息的 相同,那么保证   的信息在  的信息之前给出


输入描述:

第一行三个整数:  ,  , 

第二行  个正整数: 第  个整数表示  。

接下来的  行:

第  行给出整数 :

特别的,如果  ,那么第  行还要输入一个整数 


输出描述:

对于每一行  的信息输出一行,表示截至到  发生过多少次爆炸。
示例1

输入

复制
4 3 1
4 1 2 3
1 0 0
1 1 1
2 2

输出

复制
1

说明

一开始 , 第  小时的时候,房屋 ① 刚开始燃烧,这时候其 燃烧剧烈程度 为  , 根据信息1可知这时候它发生了爆炸。然后,第  小时的时候,房屋 ② 也开始了燃烧,但是它的燃烧剧烈程度还是  ,最后回答在第  小时的时候共爆炸了1次。
示例2

输入

复制
10 10 10
8 6 3 3 1 1 2 10 7 10 
1 1 10
2 6 
1 8 6
2 12 
2 13 
2 17 
1 19 190
2 23 
1 25 128
1 30 26

输出

复制
1
2
2
2
3

备注:


对于 % 的数据保证:


ps.这道题目的读入数据非常大,您可能需要用尽可能优秀的 IO 优化。