#Lutece3130. 香味鸡丝

香味鸡丝

Migrated from Lutece 3130 香味鸡丝

All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.

Description

Tag:带换根的树剖

别忘了,如今我也是个圣堂武士了

——香味鸡丝凯拉克斯


凯拉克斯要训练一批太阳引导员,为此他设计一种树形结构,希望你能实现一些功能。

现给出一棵 nn 个节点的有根树,初始根节点为 11,标号为 11 ~ nn,你需要维护以下三种操作:

  • ① 给定一个点vv,将整颗树的根变为 vv
  • ② 给定两个点u,vu,v和整数xx,将lca(u,vu, v)为根的子树的所有点的点权都加上x。
  • ③ 给定一个点vv,你需要回答以v所在的子树的所有点的权值和。

Input

第一行输入包含两个整数 nnqq (1n1051\le n\le 10^5, 1q1051\le q\le 10^5) ——分别表示树中的顶点数和要处理的操作数。 第二行包含nn个空格分隔的整数a1,a2,ana_1, a_2,… , a_n ( 108ai108-10^8\le a_i\le 10^8 )表示顶点初始值。 接下来的 n1n-1 行每行包含两个整数ui,viu_i, v_i表示顶点uiu_iviv_i之间存在无向边;

下面的qq行代表操作,每个操作根据其类型具有以下格式之一: 对于第一类操作,输入11 vv (1vn1\le v\le n)。 对于第二类操作,输入22 uu vv xx (1u,vn1\le u,v\le n108x108-10^8\le x\le 10^8)。 对于第三类操作,输入33 vv (1vn1\le v\le n)。 操作必须按照给定的顺序执行!!!

Output

对于每一次第三类操作,输出权值和的答案。

Samples

6 7
1 4 2 8 5 7
1 2
3 1
4 3
4 5
3 6
3 1
2 4 6 3
3 4
1 6
2 2 4 -5
1 4
3 3
27
19
5
4 6
4 3 5 6
1 2
2 3
3 4
3 1
1 3
2 2 4 3
1 1
2 2 4 -3
3 1
18
21

Note

可以保证至少有一次第三类操作

Resources

2024 UESTC ICPC Training for Data Structure