Coding is the closest thing we have to superpower !

3691 : 线段树-练习-层次更新权值
描述

给定一棵点数为 N 的树,节点从1到N编号,以点 1 为根,每个点有权值。

对树进行 M个操作,操作有两种:

1 u val:把节点u的权值增加val,u的儿子节点权值增加-val,u的儿子的儿子的节点权值增加-(-val),依此类推。

2 u:查询节点u的权值。

输入

第一行包含两个整数N, M(1 \le N, M \le 2 \cdot 10^5)

接下来一行 N 个整数,表示树中节点的初始权值a_1, a_2, a_3, ..., a_N (1 \le a_i \le 1000)

接下来 N-1 行每行两个正整数a, b(1 \le a, b \le N),表示该树中存在一条边 (a, b)。

接下来 M 行,每行表示一次操作。

形如1 u val 或 2 u,(1 \le u \le n, 1 \le val \le 1000)

输出

对于第2种操作,输出节点权值。

样例

输入

5 5
1 2 1 1 2
1 2
1 3
2 4
2 5
1 2 3
1 1 2
2 1
2 2
2 4

输出

3
3
0
标签
语言:
主题: