涨薪
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

公司中总共有 n 个人,其中第 i 个人的初始工资为 a_i。公司根据每个人的绩效(工作表现)来评定每个人的涨薪幅度。每年有 x 个人绩效为 A,工资可以变为原来的 3 倍;y 个人绩效为 B,工资可以变为原来的 2 倍,其余人绩效为 C,工资不变,连续两年绩效为 C 会被开除。(保证 )

假如公司没有一直招聘新员工,请问 m 年后,公司需要给所有**在职员工**支付的工资总和最多为多少。由于答案可能很大,请输出对 取模后的结果。

输入描述:

输入第一行包含四个正整数 n, m,x,y,意义如题面所示。
接下来一行包含 n 个正整数,第 i 个正整数为 a_i 代表第 i 个人的初始工资。

输出描述:

输出一行一个整数表示 m 年后工资总和对  取模后的结果。
示例1

输入

复制
2 1 1 1
5 3

输出

复制
21
示例2

输入

复制
2 2 0 0
5 2

输出

复制
0

备注:

对于 20% 的数据范围,满足 
对于 40% 的数据范围,满足
对于另外 20% 的数据范围,满足 满足 且 x+y=n
对于另外 20% 的数据范围,满足 满足 且 x+y=n
对于 100% 的数据范围,满足