#include<bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define dbg(a,b,c,d) cerr<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
#define kill(a) {cout<<a<<endl;continue;}
#define KILL(a) {cout<<a<<endl;return 0;}
#define debug cerr<<"Error Found"<<endl;
#define mem(a,b) memset(a,b,sizeof(a))
#define lcm(a, b) (a/__gcd(a,b))*b
#define w(t) cin>>t;while(t--)
#define pi 2 * acos(0.0)
#define endl "\n"
int t, cs = 0;
const int mxn = 2e5 + 3, mod = 1e9 + 7;
int fact[mxn];
int power(int base, int po)
{
int res = 1;
while(po)
{
if(po & 1)res = 1LL * res * base % mod;
base = 1LL * base * base % mod, po /= 2;
}
return res;
}
void pre()
{
fact[0] = 1;
for(int i = 1; i < mxn; i++)fact[i] = 1LL * fact[i - 1] * i % mod;
}
int ncr(int n, int r)
{
int res = fact[n];
res = 1LL * res * power(fact[n - r], mod - 2) % mod;
res = 1LL * res * power(fact[r], mod - 2) % mod;
return res;
}
int32_t main()
{
pre();
//fast
w(t)
{
int n, x;
cin >> n >> x;
int ar[n];
int sum = 0;
for(int i = 0; i < n; i++)cin >> ar[i], sum += ar[i];
sort(ar, ar + n, greater<int>());
int ans = 0, cnt = n, bad = 0, ex = n;
bool f = true;
for(int i = 0; i < n and f; i++)
{
bad += ar[i];
if(sum - bad >= x)ans += ncr(n, i + 1), ans %= mod, ex = i + 1;
else f = false;
}
cnt = sum;
int N = n - cnt;
for(int i = 1; i <= N; i++)
{
int a = ncr(N, i);
ans += 1LL * a * cnt % mod, ans %= mod;
if(i > ex)ans += a, ans %= mod;
}
cout << ans << endl;
}
}