小苯的水瓶
题号:NC285983
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小苯面前有 n 个容量无限的水瓶,目前第 i 个瓶子目前装了 a_i 水量的水。他可以使用以下操作至多倒出 m 单位的水:
\bullet 选择两个不同的水瓶 i, j\ (i \ne j),再将 i 瓶中任意正整数量的水倒入 j 瓶。(前提是倒出来的水不超过 i 瓶中还剩下的水。)
(形式化的:选择任意正整数 x\ (1 \leq x \leq a_i),执行:a_i := a_i - x, a_j := a_j + x;其中 := 表示赋值操作,同时需要保证所有此操作中 x 的和不超过 m。)

此外,小苯还有有一个装了 k 单位水量的水壶,他可以将水壶中的水倒进任意水瓶任意次,前提是倒入的水量也必须是正整数,同时总共不能倒出超过 k 单位水量。
小苯操作完后,会从所有水瓶中选择一瓶水量最小的水喝掉,他想知道他最多可以喝掉多少水,请你帮他算一算吧。

输入描述:

每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 2 \times 10^4\right) 代表数据组数,每组测试数据描述如下:
第一行输入三个正整数 n\ m\ k\ (1 \leq n \leq 2 \times 10^5, 0 \leq m, k \leq 2 \times 10^{14}),分别表示水瓶的个数,可以互相之间倒水的总量,和额外的水壶中的水量。
第二行 n 个正整数 a_i\ (0 \leq a_i \leq 10^9),表示每瓶水目前所装的水量。
(保证同一个测试文件中的测试数据里 n 的总和不超过 2 \times 10^5。)

输出描述:

对于每组测试数据,在单独的一行输出一个整数表示答案,表示小苯喝掉的水的最大量。
示例1

输入

复制
2
5 4 5
1 2 3 4 5
1 100 1
1

输出

复制
4
2

说明

对于第一组测试数据,初始水瓶中的水量为 \{1,3,4,2,5\}
首先可以选择将水壶中的 5 单位水给 1 号水瓶倒入 3 单位,此时水量为:\{4,3,4,2,5\}
此时水壶还剩 2 单位,全部倒给 4 号水瓶,此时水量为:\{4,3,4,4,5\}
此时可以将 5 号水瓶中的水给 2 号水瓶倒入 1 单位,此时水量为 \{4,4,4,4,4\}
小苯会选择最少的一瓶喝掉,此时所有水瓶的水全都一样多,因此小苯就喝掉了 4 单位水。