#include <stdio.h>
#include <string.h>
#define MOD 1000000007

int tcase,n,m,v[1010];
int ans,f[1010][3][3];

int main()
{
    int i,j,a,b;
    scanf("%d",&tcase);
    while(tcase--)
    {
        scanf("%d%d",&n,&m);
        for(i=1;i<=n;i++) scanf("%d",&v[i]);
        
        memset(f,0,sizeof(f));
        f[0][0][0] = 1;
        for(i=1;i<=n;i++) for(j=m;j>=0;j--) for(a=2;a>=0;a--) for(b=2;b>=0;b--)
        {
            if(j >= v[i])
            {
                f[j][a][b] = (f[j][a][b] + f[j-v[i]][a][b])%MOD;
                if(a) f[j][a][b] = (f[j][a][b] + f[j-v[i]][a-1][b])%MOD;
            }
            if(b) f[j][a][b] = (f[j][a][b] + f[j][a][b-1])%MOD;
        }
        
        for(i=1,ans=0;i<=m;i++) ans = (ans + f[i][2][2])%MOD;
        printf("%I64d\n",4LL*ans%MOD);
    }
    return 0;
}
