#include <bits/stdc++.h>
using namespace std;
#define int long long
#define yes cout << "YES\n";
#define no cout << "NO\n";
void FastIO(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
}
/// Bouquet
void solve(){
int n,m;
cin >> n >> m;
vector<int> vec(n);
map<int,int> freq;
for(int i = 0; i < n; i++) cin >> vec[i];
sort(vec.rbegin(),vec.rend());
// for(int i = 0; i < n; i++){
// cout << vec[i] << ' ';
// }
// cout << "\n";
int i = 0, j = i+1, sum = vec[i], ans = 0;
if(sum <= m)
ans = sum;
while (j < n) {
if (vec[i] - vec[j] > 1 || sum + vec[j] > m) {
sum -= vec[i];
i++;
} else {
sum += vec[j];
j++;
ans = max(ans, sum);
}
}
if(sum <= m)
ans = max(ans,sum);
cout << ans << "\n";
}
signed main(){
FastIO();
int t;
cin >> t;
while(t--){
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSB5ZXMgY291dCA8PCAiWUVTXG4iOwojZGVmaW5lIG5vIGNvdXQgPDwgIk5PXG4iOwoKCnZvaWQgRmFzdElPKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBjb3V0LnRpZShudWxscHRyKTsKfQovLy8gQm91cXVldAp2b2lkIHNvbHZlKCl7CiAgICBpbnQgbixtOwogICAgY2luID4+IG4gPj4gbTsKCiAgICB2ZWN0b3I8aW50PiB2ZWMobik7CiAgICBtYXA8aW50LGludD4gZnJlcTsKCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSBjaW4gPj4gdmVjW2ldOwoKICAgIHNvcnQodmVjLnJiZWdpbigpLHZlYy5yZW5kKCkpOwoKLy8gICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkrKyl7Ci8vICAgICAgICBjb3V0IDw8IHZlY1tpXSA8PCAnICc7Ci8vICAgIH0KLy8gICAgY291dCA8PCAiXG4iOwoKICAgIGludCBpID0gMCwgaiA9IGkrMSwgc3VtID0gdmVjW2ldLCBhbnMgPSAwOwoKICAgIGlmKHN1bSA8PSBtKQogICAgICAgIGFucyA9IHN1bTsKCiAgICB3aGlsZSAoaiA8IG4pIHsKICAgICAgICBpZiAodmVjW2ldIC0gdmVjW2pdID4gMSB8fCBzdW0gKyB2ZWNbal0gPiBtKSB7CiAgICAgICAgICAgIHN1bSAtPSB2ZWNbaV07CiAgICAgICAgICAgIGkrKzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzdW0gKz0gdmVjW2pdOwogICAgICAgICAgICBqKys7CiAgICAgICAgICAgIGFucyA9IG1heChhbnMsIHN1bSk7CiAgICAgICAgfQogICAgfQogICAgaWYoc3VtIDw9IG0pCiAgICAgICAgYW5zID0gbWF4KGFucyxzdW0pOwoKICAgIGNvdXQgPDwgYW5zIDw8ICJcbiI7Cn0KCnNpZ25lZCBtYWluKCl7CiAgICBGYXN0SU8oKTsKCiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwoKICAgIHdoaWxlKHQtLSl7CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIHJldHVybiAwOwp9