#P12808. "合理"避税

"合理"避税

"合理"避税

Problem Description

在某个外星国度,某团队一共有 nn 人,刚刚向甲方提交了自己的工作成果。现在,根据合同,甲方需要向他们支付 mm 元的报酬,且甲方每个月仅会发放一次报酬。 这些报酬将按照劳务所得的方式发放。而在这个国家里,只要每个人单笔劳务所得 严格大于 kk 元,那么超过的部分将会扣除一部分作为税款。另外,如果甲方一次性发放给的人数 严格大于 pp 人,那么不管总金额是多少,也会扣除一部分作为税款。最后,每个人也有一个收款上限。在甲方开始发放报酬之前,第 ii 个人还差收到 aia_i 元钱之后就需要缴税了(也就是这人如果 一共 收到了 严格大于 aia_i 元,那么就需要缴税)。 为了"合理"避税,甲乙双方需要商讨出每个月由哪些人来进行收款以及每个人具体收多少钱,使得所有报酬能尽快收完且不会缴税。你只需要求出最快收完报酬所需要的月数。

Input

第一行输入一个正整数 TT1T100041\le T\le 10004),表示数据组数。 对于每一组数据,第一行输入四个正整数 n,m,k,pn, m, k, p($1 \le p \le n \le 2 \cdot 10^5, 1\le k \le m \le 10^9$),分别表示人数、报酬金额数、单笔劳务最大金额和甲方一次性最多发放的人数。 第二行输入 nn 个正整数 a1,a2,,ana_1,a_2,\ldots,a_n1ai1091 \le a_i \le 10^9),表示第 ii 个人还差收到 aia_i 元钱之后就需要缴税。数据保证 aim\sum a_i \ge m。 对于单个测试点,n4105+14\sum n \le 4 \cdot 10^5 + 14

Output

对于每一组数据,输出收完所有报酬最少需要的月数。

Sample Input

3
5 33 3 2
9 8 7 6 5
2 1000000000 3 1
100000000 900000000
7 19198 10 3
11451 4191 919 810 1926 8 17

Sample Output

6
333333334
1133

Hint

对于第一组数据,一种方案是分别让 $\left(1,2\right), \left(1,2\right), \left(1,3\right), \left(3,4\right), \left(4,5\right), \left(2,5\right)$ 去收款,共计六个月。

Source

2025“钉耙编程”中国大学生算法设计暑期联赛(5)