#include <iostream>
using namespace std;
long long p=1e9+7;
long long w[500005];
long long k[500005];

long long re(long long a,long long b,long long c){

long long d=1;
a=a%c;
while(b){
    if(b&1)
d=(a%c*(d%c))%c;
a=(a%c*(a%c))%c;
b>>=1;



}

return d%c;



}
long long hh(long long a,long long b,long long c){

if(b>a){
    return 0;
}
return (w[a]*k[b])%p*k[a-b]%p;



}
int main(){
    w[0]=1;
    for(int i=1;i<=500000;i++){
w[i]=w[i-1]*i%p;
    }
    k[0]=1;
    for(int i=1;i<=500000;i++){
long long it=re(i,p-2,p);
k[i]=k[i-1]*it%p;



    }
long long t;
cin>>t;
while(t--){
long long n,k;
cin>>n>>k;
long long a,b;
a=0;b=0;
for(int i=1;i<=n;i++){
    int c;
    cin>>c;
    if(c==0){
        a++;
    }
}
b=n-a;
long long d=(k-1)/2;
long long cnt=0;
for(int i=0;i<=d;i++){

    cnt=(hh(a,i,p)*hh(b,k-i,p)%p+cnt)%p;
}

cout<<cnt<<endl;

}


    return 0;
}