#include <bits/stdc++.h>
long long int power(long long int x, long long int b) {
  long long int p = 1;
  while (b > 0) {
    if (b & 1) {
      p = p * x;
      p %= 1000000007;
    }
    b >>= 1;
    x *= x;
    x %= 1000000007;
  }
  return p % 1000000007;
}
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  ;
  long long int tc;
  cin >> tc;
  for (long long int number = 1; number <= tc; number++) {
    long long int n, p, k;
    cin >> n >> p >> k;
    vector<long long int> a(n);
    for (long long int i = 0; i < n; i++) {
      cin >> a[i];
    };
    sort(a.begin(), a.end());
    if (a[k - 1] > p) {
      long long int ans = 0;
      for (long long int i = 0; i < n; i++) {
        if (p - a[i] >= 0) {
          ans++;
          p -= a[i];
        }
      }
      cout << ans << "\n";
      continue;
    }
    vector<long long int> dp(n);
    long long int imax = -1;
    for (long long int i = k - 1; i < 2 * k - 1 && i < n; i++) {
      if (p - a[i] >= 0) {
        dp[i] = p - a[i];
        imax = i;
      }
    }
    for (long long int i = 2 * k - 1; i < n; i++) {
      if (dp[i - k] - a[i] >= 0) {
        dp[i] = dp[i - k] - a[i];
        imax = i;
      }
    }
    long long int ans = 0;
    imax++;
    ans = (imax / k) * k;
    long long int ind = imax - 1;
    for (long long int i = 0; i < imax / k; i++) {
      p -= a[ind];
      ind -= k;
    }
    for (long long int i = 0; i < (imax % k); i++) {
      if (p - a[i] >= 0LL) {
        p -= a[i];
        ans++;
      } else
        break;
    }
    cout << ans << "\n";
  }
  return 0;
}
