E. 路径哈希

Medium

时间限制:5000 ms

内存限制:256 MiB

题面

给定一棵节点数为nn的树,每个树都有一个值WiW_i

qq次询问,询问对于起点uu和终点vv,有一个简单路径数组PP,计算路径长度P|P|和路径哈希(i=0P1WP[i]BP1i)modM(\sum_{i=0}^{|P|-1}W_{P[i]}*B^{|P|-1-i}) \mod M

例如有一条路径为1231 \to 2 \to 3,路径哈希是(W1B2+W2B+W3)modM(W_1 * B^2 + W_2 * B + W_3) \mod M

输入格式

第一行四个整数n,q,B,Mn,q,B,M

接下来一行,nn个整数表示WiW_i

接下来n1n-1行,每行两个整数u,vu,v,表示节点uu到节点vv有一条边。

接下来qq行,每行两个整数u,vu,v,表示询问节点uu到节点vv​。

n105,qmin(n(n1)2,5105)n \le 10^5, q \le \min(\cfrac{n*(n-1)}{2},5*10^5)

B,M,Wi109B,M,W_i \le 10^9

输出格式

qq行结果,路径长度和路径哈希。

样例

输入

7 6 2 998244353
1 1 1 1 1 1 1
1 2
1 3
2 4
2 5
3 6
3 7
4 5
4 6
4 7
5 6
5 7
6 7

输出

3 7
5 31
5 31
5 31
5 31
3 7