E. 路径哈希

Medium

时间限制:5000 ms

内存限制:256 MiB

题面

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

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

例如有一条路径为1→2→31 \to 2 \to 3,路径哈希是(W1∗B2+W2∗B+W3)mod  M(W_1 * B^2 + W_2 * B + W_3) \mod M。

输入格式

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

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

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

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

n≤105,q≤min⁡(n∗(n−1)2,5∗105)n \le 10^5, q \le \min(\cfrac{n*(n-1)}{2},5*10^5)

B,M,Wi≤109B,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