Witcher Genshin Impact
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

你说的很对,但是《Witcher Genshin Impact》是由波兰纯绿制作发行的一款开放世界冒险游戏,游戏发生在一个被称作"猎魔人世界"的幻想世界,在这里,被猎魔人选中的人将被授予"青草试炼",导引突变之力。玩家将扮演一位名为"盖洛特"的神秘角色,在自由的旅行中邂逅性格各异、能力独特的同伴(Witch)们,和他们一起找回失散的亲人,并击败强敌——同时,逐步发掘"狂猎"的真相。

盖洛特是一个经验丰富Witcher.现在有n个猎魔委托摆在他面前,他却只想做其中连续的一部分。其中第i个委托的预期收获是𝑣𝑖,𝑖{1,2,,𝑛}, 因为盖洛特做完一个委托的奖励会增强他的实力同时也会增加他下次委托的奖励(不是),所以我们认为盖洛特做了第l到r个委托,他的总收获会是𝑣𝑙+𝑣𝑙×𝑣𝑙+1++𝑣𝑙×𝑣𝑙+1××𝑣𝑟mod𝑝.其中𝑝 是.

但由于Witcher世界由勾策划所掌控, 他们常常会改变任务的预期收获, 每次改变将一个委托的奖励从a改成b.

因为我们要求你帮盖洛特算一下从l做到r任务的总收获.

输入描述:

第一行两个数 𝑛表示总任务数;𝑚表示总操作个数. 接下来一行𝑛个整数, 表示各个任务的初始收获。接下来𝑚行, 每行三个整数𝑜𝑝𝑡,𝑎,𝑏, 第一个整数𝑜𝑝𝑡表示操作的种类,

- 若𝑜𝑝𝑡1, 表示查询𝑎𝑏的预期收获.

- 若𝑜𝑝𝑡2, 表示修改𝑎的预期收获为𝑏.

1≤n,m≤100000, vi≤1145141

输出描述:

对每次的操作1, 输出一个整数表示收获.
示例1

输入

复制
5 10
1 1 1 1 1
1 1 5
2 2 2
1 1 5
2 3 3
1 1 5
2 4 4
1 1 5
2 5 5
1 1 5
1 1 5

输出

复制
5
9
21
57
153
153
示例2

输入

复制
16 25
4 5 3 9 8 8 4 8 3 8 3 6 6 4 6 3
1 1 13
1 1 13
2 8 3
2 3 4
1 9 10
1 3 12
1 9 16
2 12 11
2 9 2
2 15 1
1 1 14
2 1 2
1 1 15
1 2 10
1 7 16
1 5 12
1 3 14
2 4 8
2 3 6
2 14 6
1 8 15
2 15 5
2 13 16
2 8 11
2 6 16

输出

复制
181427
181427
27
978892
262323
295608
716045
395523
805480
457288
930892
125337