#H1058. 树

Background

Description

定义数列 FF :

F0=0,F1=1,Fn=aFn1+bFn2(n2)F_0=0,F_1=1,F_n=a*F_{n-1}+b*F_{n-2}(n\geq 2)

给定一棵 NN 个节点的树,每个点 ii 有一个权值为 AiA_i

接下来有 MM 个操作:

1 u v: 设树上 uu 点到 vv 点路径上节点为 b1,b2,,bkb_1, b_2, \cdots ,b_k ,询问 $\sum\limits_{i=1}^k\sum\limits_{j=i}^kF(\sum\limits_{t=i}^jA_{b_t})$ 的值。(答案对109+710^9+7取模)

2 x y z: 删除连接 yyxx 的无向边(保证存在此边),然后加入一条连接 yyzz 的无向边,保证操作后仍然为一棵树。

3 u v K: 将 uuvv 路径上所有节点的权值修改为 KK

Format

Input

11 行,44 个正整数 N,M,a,bN, M, a, b

22 行,NN 个正整数 AiA_i 表示各点的点权。

接下来 N1N-1 行,每行两个数 xi,yix_i,y_i,表示初始树上存在连接 xix_iyiy_i 的无向边。

最后 MM 行,每行一个操作。

Output

对于每一个操作 11 ,输出一行表示答案。

Samples

6 5 1 1
1 2 3 4 5 6
1 2
1 3
2 4
2 5
3 6
1 2 3
3 2 3 1
1 2 3
2 2 4 3
1 2 4
17
7
36

Limitation

对于 30%30\% 的数据,满足 1N,M500,1Ai,K,a,b101\leq N, M \leq 500, 1\leq A_i, K, a, b\leq 10

对于 100%100\% 的数据,满足 1N,M105,1Ai,K,a,b1091\leq N,M \leq 10^5, 1\leq A_i, K, a, b\leq 10^9