#P11571. 毛毛虫

毛毛虫

Backgrounds

小D是一个胆小的女孩,她最讨厌的东西就是毛毛虫。因为一般情况下毛毛虫都在树上所以这题和树有关。

Description

给定一颗有3n1000003\le n\le 100000有初始点权,边权为1的以1为根的树。

定义树上u到v的路径是集合Path(u,v)\text{Path}(u,v),由路径上的点构成。

定义毛毛虫路径是集合Worm(u,v)\text{Worm}(u,v),满足$\forall x \in \text{Worm}(u,v)\exist y \in \text{Path}(u,v)$中x到y的最短距离1\le 1

  • a=1,子树修改。将一个点的子树中所有点加上一个值。
  • a=2,子树查询。输出一个点的子树的权值和mod232\text{mod}\quad 2^{32}
  • a=3,毛毛虫路径修改。将Worm(u,v)\text{Worm}(u,v) 所有的点加上一个值。
  • a=4,毛毛虫路径查询。输出Worm(u,v)\text{Worm}(u,v) 所有的点的权值和mod232\text{mod}\quad 2^{32}

但是她早就是地表最强选手所以她当然会这道题啦。小D其实早就【数据删除】你了,所以她决定考验一下你会不会做。问题现在就交给你啦! 你不应该吊打妹子,所以你不能吊打std(出题人不是妹子)

Input Format

第一行三个正整数整数n,mn,m分别表示点的个数和询问的个数。

接下来一行nn个非负整数表示初始点权wiw_i

接下来n1n-1行每行恰好两个正整数,分别表示一条边的两个端点。

接下来mm行每行恰好三个正整数,表示询问,保证u,v[1,n]u, v\in[1,n],保证w<231w< 2^{31}

n m
w_i ...
u v
...
1 u w
2 u
3 u v w
4 u v 
...

保证输入数据构成一棵树。

Output Format

你需要输出恰好mm行非负整数,依次表示第ii次询问的答案。

ans_1
...

Input Sample

5 4
10 45 32 16 5 
2 1
2 4
2 3
1 5
1 4 3
2 4
3 1 2 5
4 1 3

Output Sample

19
136

Constraints

子任务特征 分值 n m
签到成功 9 100\le 100
再接再厉 3000\le 3000
数据随机 6 100000\le 100000 10000\le 10000
激你太镁 8 50000\le 50000
数据随我(a=4)(a=4) 15 100000\le 100000 100000\le 100000
一条链 6
度数贼小(deg5)(\text{deg}\le 5) 10
脑袋一热(a3a\ge 3) 17 50000\le 50000
恭喜A C 20 100000\le 100000
解决N P Turing Award\text{T}\color{red}\text{uring Award} nan\color{red}nan

Hint

精心构造的数据,hack了所有的暴力,放心地投入此题吧,会有收获的。一定能区分出 万众瞩目 的你。