#include <bits/stdc++.h>
using namespace std;

using ll = long long;
using i128 = __int128_t;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int t;
    if (!(cin >> t)) return 0;

    while (t--) {
        int n;
        ll a, M;
        cin >> n >> a >> M;
        vector<ll> b(n);
        for (int i = 0; i < n; ++i) cin >> b[i];

        // Бинарный поиск по длине луча H
        ll low = 1;
        ll high = (ll)1e18;   // достаточно большой верхний предел
        ll ans = 1;           // по условию гарантируется существование ответа

        auto ok = [&](ll H) -> bool {
            i128 sumB = 0;
            i128 n128 = n;
            i128 M128 = M;
            i128 a128 = a;

            for (int i = 0; i < n; ++i) {
                ll val = (b[i] < H ? b[i] : H);
                sumB += (i128)val;

                // Можно делать ранний выход, если уже перебрали достаточно
                i128 curCost = n128 + (i128)2 * a128 * sumB;
                if (curCost >= M128) {
                    return false; // заряд не останется строго положительным
                }
            }

            i128 totalCost = n128 + (i128)2 * a128 * sumB;
            return totalCost < M128;
        };

        while (low <= high) {
            ll mid = low + (high - low) / 2;
            if (ok(mid)) {
                ans = mid;
                low = mid + 1;   // попробуем увеличить H
            } else {
                high = mid - 1;  // слишком большой H, уменьшаем
            }
        }

        cout << ans << '\n';
    }

    return 0;
}