炸弹测试
题号:NC202804
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

    爆破专家小B在测试他新研发的炸弹,他的实验场从左到有共有堆土,第堆土的高度为。作为小B的助手,你每次需要帮助他扔炸弹或者观测某一堆土当前的高度共次。


  • 扔炸弹操作:在位置扔一个威力为,衰减速率为的炸弹。威力表示在处炸掉高度的土。衰减速率表示在处炸掉高度的土,在处炸掉的土,以此类推直至在当前位置威力衰减的小于等于零。
  • 观测操作:告诉小B位置土堆的高度,注意可能为负数,代表在此位置炸出了一个坑。


输入描述:

输入共

第一行两个数,代表土堆数以及操作数。

第二行个数,表示每个土堆的高度。

接下来行,每行第一个数代表操作种类。
    表示扔炸弹操作,接下来有三个数,表示扔炸弹位置,炸掉威力,衰减速率。
    表示观测操作,接下来一个数表示观测位置。

输出描述:

对于每次观测操作,输出一个数表示观测位置土的高度。
示例1

输入

复制
5 9
1 2 3 4 5
1 3 3 1
2 1
1 2 3 2
2 2
1 4 5 2
2 3
1 2 6 3
2 4
2 5

输出

复制
0
-3
-4
-3
1

说明

初始,

扔第一个炸弹后,

扔第二个炸弹后,

扔第三个炸弹后,

扔第四个炸弹后,