#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;
}