#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll M=1e9+7;
vector<ll> V,VV;
ll A[20][10];
ll quickmod(ll a,ll b,ll m){
ll ans=1;
while(b){
if(b&1)ans=(ans*a)%m;
b>>=1;
a=a*a%m;
}
return ans;
}
ll inv(ll a,ll p){
return quickmod(a, p-2, p);
}
int main(){
int T;
cin>>T;
while(T--){
ll n,m;
cin>>n>>m;
V.clear(),VV.clear();
for(int i=1;i<=n;++i)for(int j=1;j<=6;++j)cin>>A[i][j];
for(int i=1;i<=6;++i)V.push_back(A[1][i]);
for(int i=2;i<=n/2;++i){
for(int j=0;j<V.size();++j){
for(int k=1;k<=6;++k){
VV.push_back(V[j]*A[i][k]%M);
}
}
V.clear();
for(int j=0;j<VV.size();++j){
V.push_back(VV[j]);
}
VV.clear();
}
map<ll,ll> Ma;
Ma.clear();
for(int i=0;i<V.size();++i){
Ma[V[i]]++;
}
V.clear(),VV.clear();
for(int i=1;i<=6;++i)V.push_back(A[n/2+1][i]);
for(int i=n/2+2;i<=n;++i){
for(int j=0;j<V.size();++j){
for(int k=1;k<=6;++k){
VV.push_back(V[j]*A[i][k]%M);
}
}
V.clear();
for(int j=0;j<VV.size();++j){
V.push_back(VV[j]);
}
VV.clear();
}
ll ans=0;
for(int i=0;i<V.size();++i){
ans+=Ma[m*inv(V[i],M)%M];
}
cout<<ans<<endl;
}
}