#include <bits/stdc++.h>
using namespace std;
int main() {
  int t;
  cin >> t;
  while (t--) {
    long long n, p, k, i, j, ans = 0, s, x, y;
    scanf("%lld%lld%lld", &n, &p, &k);
    long long a[n];
    for (i = 0; i < n; i++) scanf("%lld", &a[i]);
    sort(a, a + n);
    long long pre[n + 1], pk[n + 1];
    pre[0] = 0;
    for (i = 1; i < n + 1; i++) pre[i] = pre[i - 1] + a[i - 1];
    for (i = 0; i < k; i++) {
      s = p;
      y = 0;
      for (j = i + k - 1; j < n; j += k) {
        if (s < a[j]) break;
        s -= a[j];
        y += k;
      }
      x = upper_bound(pre, pre + n + 1, s) - pre;
      x--;
      x = min(x, i);
      ans = max(ans, x + y);
    }
    cout << ans << '\n';
  }
}
