小z有一棵 n 个点的树,每个点有个点权 Vi。小z可以选择一些不相交的路径去覆盖一些点,如果他覆盖了权值和为 S 的点,共用了 K 条路径,则最终收获就是 SK+1。
贪婪的小z为了收获更多会在一开始修改点权,他可以选择一个 0 到 T 中间的整数 C,所有点的点权都会加上 C,不过,所有点的点权都会对一个整数 Limit 取模,即变成 (V_i+C) \pmod{Limit}。小z想知道他最大的收获是多少。
输入格式
第一行两个整数 n 和 Limit。
接下来一行 n 个整数 V_i。
接下来 n-1 行,每行两个整数 u_i,v_i,表示这棵树。
最后一行一个整数 T,表示修改范围。
输出格式
一行一个实数,表示答案,当你的答案与标准答案绝对误差不超过 10{-6} 可以获得满分。
样例数据
输入样例一
4 100
1 1 1 1
1 2
1 3
1 4
0
输出样例一
1.5
数据规模与约定
本题采用捆绑测试
对于 15 分的数据,n \le 2000,T=0;
对于另外 15 分的数据,n \le 2000,Limit \le 100;
对于另外 30 分的数据,n\le 1000
对于所有的数据, n\le 5000,V_i,T < Limit \le 10^6。
时间限制:1\text{s}
空间限制:512\text{MB}