Set or Decrease
You are given an integer array $$$a_1, a_2, \dots, a_n$$$ and integer $$$k$$$.In one step you can   either choose some index $$$i$$$ and decrease $$$a_i$$$ by one (make $$$a_i = a_i - 1$$$);  or choose two indices $$$i$$$ and $$$j$$$ and set $$$a_i$$$ equal to $$$a_j$$$ (make $$$a_i = a_j$$$). What is the minimum number of steps you need to make the sum of array $$$\sum\limits_{i=1}^{n}{a_i} \le k$$$? (You are allowed to make values of array negative).
In the first test case, you should decrease $$$a_1$$$ $$$10$$$ times to get the sum lower or equal to $$$k = 10$$$.In the second test case, the sum of array $$$a$$$ is already less or equal to $$$69$$$, so you don't need to change it.In the third test case, you can, for example:   set $$$a_4 = a_3 = 1$$$;  decrease $$$a_4$$$ by one, and get $$$a_4 = 0$$$.  As a result, you'll get array $$$[1, 2, 1, 0, 1, 2, 1]$$$ with sum less or equal to $$$8$$$ in $$$1 + 1 = 2$$$ steps.In the fourth test case, you can, for example:   choose $$$a_7$$$ and decrease in by one $$$3$$$ times; you'll get $$$a_7 = -2$$$;  choose $$$4$$$ elements $$$a_6$$$, $$$a_8$$$, $$$a_9$$$ and $$$a_{10}$$$ and them equal to $$$a_7 = -2$$$.  As a result, you'll get array $$$[1, 2, 3, 1, 2, -2, -2, -2, -2, -2]$$$ with sum less or equal to $$$1$$$ in $$$3 + 4 = 7$$$ steps.
The first line contains a single integer $$$t$$$ ($$$1 \le t \le 10^4$$$) — the number of test cases.The first line of each test case contains two integers $$$n$$$ and $$$k$$$ ($$$1 \le n \le 2 \cdot 10^5$$$; $$$1 \le k \le 10^{15}$$$) — the size of array $$$a$$$ and upper bound on its sum.The second line of each test case contains $$$n$$$ integers $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 10^9$$$) — the array itself.It's guaranteed that the sum of $$$n$$$ over all test cases doesn't exceed $$$2 \cdot 10^5$$$.
For each test case, print one integer — the minimum number of steps to make $$$\sum\limits_{i=1}^{n}{a_i} \le k$$$.
res = []
for i in range(int(input())):
    (n, k) = map(int, input().split())
    a = list(map(int, input().split()))
    a.sort()
    s = sum(a) - a[0]
    temp = k - s
    val = a[0] - temp if a[0] - temp > 0 else 0
    for eq in range(1, n):
        s -= a[-eq]
        a_min = (k - s) // (eq + 1)
        sub = max(a[0] - a_min, 0)
        val = min(val, sub + eq)
    res.append(val)
for val in res:
    print(val)
R = lambda : map(int, input().split())
(t,) = R()
while t:
    t -= 1
    (n, k) = R()
    a = sorted(R())
    r = 2000000000.0
    for x in a:
        k -= x
        n -= 1
        r = min(r, n - min(0, k - a[0] * n) // (n + 1))
    print(r)
from math import ceil

def get_smallest_c(d, d_sum, to_reduce, a_0):
    target = to_reduce - d_sum + d * a_0
    if target <= 0:
        return 0
    smallest_c = ceil(target / (d + 1))
    return smallest_c

def solve():
    (n, k) = [int(x) for x in input().split()]
    a = [int(x) for x in input().split()]
    a.sort()
    to_reduce = sum(a) - k
    if to_reduce <= 0:
        print(0)
        return
    ans = to_reduce
    d_sum = 0
    d = 0
    while len(a) > 1:
        d_sum += a[-1]
        d += 1
        c = get_smallest_c(d, d_sum, to_reduce, a[0])
        ans = min(ans, d + c)
        a.pop()
    print(ans)
t = int(input())
for _ in range(t):
    solve()