3029: 社会主义送温暖

内存限制:256 MB 时间限制:2.000 S
评测方式:文本比较 命题人:
提交:3 解决:0

题目描述

小G十分喜欢社会主义,这天他开始研究社会主义的优越性。

社会主义乐于送温暖,这有非常多的体现方式,小G正在思考其中的一种:

我们可以把社会看做一个n个节点的树,由n−1条边连接,节点从1编号。每个节点有一定财富值,用金币数描述。

每次社会主义送温暖时,他会选择两个节点,对链接它们的道路上的点, 采用这么几种方式:

1 按顺序加金币数,第一个加a,第二个加a + d,第三个加a + 2d,以此类推。

2 按顺序加金币数。第一个个a,第二个加2a,第三个加4a,以此类推。

3 按顺序改金币数,第一个改为a,第二个改为a+d,第三个改为a+2d, 以此类推。

4 按顺序改金币数,第一个改为a,第二个改为2a,第三个改为4a,以此类推。

有时社会主义还想知道两个点路径间的民众反映,所以会询问路径上的金币数和。社会主义十分低调,所以你只要告诉他答案模P的值。

输入

第一行三个数 n, q, P,分别表示节点数,操作数,和模数。

接下来n−1行每行两个整数表示一条边。

接下来1行n个整数,第i个整数 Ai 表示这个点上初始的金币数

接下来q行每行三个数op,u,v,表示操作类型与操作的两个点。

若 op = 1 或 op = 3,则这行后还会接两个整数a和d,如题面所描述;

若 op = 2 或 op = 4,则这行后还会接一个整数a;若 op = 5,则表示询问。

输出

对每个询问操作输出一行作为答案。

样例输入 复制

5 5 29311
1 3
5 3
4 3
3 2
24701 12247 27130 27071 4060
4 5 1 27096
4 2 3 17348
3 1 2 8785 8918
5 3 5
4 2 1 2936

样例输出 复制

15488 

提示

20%的数据:n, q ≤ 1000

40%的数据:n, q ≤ 10000

另有30%的数据:树是一条链。

100%的数据:1 ≤ n, q ≤ 105; 1 ≤ P ≤ 107; 0 ≤ Ai, d, a ≤ 231.