### 问题描述
Nick 最近沉迷于一款角色养成游戏,他有 n 个角色,分别为 p1,p2,p3, ... ,pn ,每个角色有当前经验值 ai 。
在接下来的 m 次操作中,它可以使角色 pi 以及其左右的 d 名角色都增加 w 经验值或者查询角色 pi 的当前经验值。
例如,在一次操作中,若 n=5,i=3,d=1,w=3 ,则 p3 和 p3 左边的一个角色 p2 以及 p3 右边的一个角色 p4 ,即 p2,p3,p4 这三个角色都增加 3 点经验值。
但需要注意的是,若该角色向左 d 个位置或向右 d 个位置后超出长度为 n 的区间,则会从另一端开始,继续延伸剩余位置。
例如,在另一次操作中,若 n=10,i=1,d=2,w=5 ,则 p1,p2,p3,p9,p10 五个角色都增加 5 点经验值( n=10 ,第一个角色向左 2 个位置,超出区间左端,因此从右端,即第 10 个角色开始向左 2 个位置,若超出区间右端,同理从区间左端开始向右)。但是即使一个角色被多次记入区间中,依然只会增加一次 w 经验值,如 n=3,i=2,d=6,w=6 ,此时这三个角色都被多次计入增加经验值的区间,但只增加 6 点经验值。
你需要做的就是帮助 Nick 在每次查询操作中,将查询的结果输出。
第一行给出两个整数 n 和 m ,表示角色个数和操作次数。
接下来一行输入 n 个整数,表示每个角色的初始经验值 ai 。
接下来 m 行,每行输入 1 i d w 或 2 i 表示一个操作。
第一个数字 op 表示操作种类:
op=1 ,修改操作。
输入三个整数 i,d,w 。表示将 a 数组的第 i 位以及向左右按规则各延伸 d 个单位的角色都增加 w 点经验值。
op=2 ,查询操作。
输入一个整数 i ,表示查询 n 个角色中的第 i 个角色的当前经验值。
对于每个 op=2 的操作,在每一行中打印该角色当前经验值。
5 6
1 2 3 4 5
1 3 1 4
2 2
1 2 3 4
2 4
1 5 1 2
2 1
6
12
7
对于所有评测数据: 1≤n,m,d≤106 , 1≤ai,w≤109 , 1≤i≤n 。
对于所有评测数据,保证答案的范围小于 264 。