#include <bits/stdc++.h>
#include "testlib.h"
 
using namespace std;
 
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define ff first
#define ss second
#define ll long long
#define ull unsigned long long
#define ui unsigned int
#define pb push_back
#define ppb pop_back
#define pf push_front
#define ppf pop_front
#define mp make_pair
#define ld long double
#define uset unordered_set
#define umap unordered_map
#define umset unordered_multiset
#define ummap unordered_multimap


/*
ВНИМАНИЕ, В ЗАДАЧЕ ОЧЕНЬ СТРАННЫЕ ОГРАНИЧЕНИЯ ТОЛЬКО ИЗ-ЗА ЗАВИСИМОСТИ M ОТ SUMB (строка 56 в валидаторе);
ТАК КАК ПОЛИГОН НЕ ПОЗВОЛЯЕТ СДЕЛАТЬ rnd.partition(n, sum, min, max). ОГРАНИЧЕНИЯ СДЕЛАНЫ, ЧТОБЫ
БЫЛО ЛЕГКО ГЕНЕРИРОВАТЬ МАССИВ b. ответ при заданных ограничениях всегда влезает в long long, потому что
L = 1, R = max(b); А b_i <= 1e12 * n <= 1e12 * 2e5 < 1e18
*/

int main(int argc, char* argv[]) {
    registerValidation(argc, argv);
    int T = inf.readInt(1,1000, "~t");
    inf.readEoln();
    int sumn = 0;
    for (int i = 0; i < T; i++){
        setTestCase(i+1);
        int n, a;
        long long M;
        n = inf.readInt(1, (int)2e5, "~n");
        inf.readSpace();
        a = inf.readInt(1, 2500, "acceleration");
        inf.readSpace();
        M = inf.readLong(3LL * n * a, (long long)2e14, "~health");
        inf.readEoln();
        vector<long long> b(n);
        long long sumb = 0;
        for (int j = 0; j < n; j++) {
            b[j] = inf.readLong(1, (long long)1e12 * n, "~b_i");
            sumb += b[j];
            ensuref(sumb <= (long long)1e18, "Sum of b is too much");
            if (j < n - 1) inf.readSpace();
        }
        // b = inf.readLongs(n, 1, (long long)1e12 * n, "b");
        ensuref(sumb >= (M - n)/(2 * a), "There is no answer for this array");
        inf.readEoln();
        sumn += n;
        ensuref(sumn <= ((int) 2e5), "sum of n is too much");
    }
    inf.readEof();
    
    return 0;
}