#include<bits/stdc++.h>
using namespace std;
bool mp[14][14],dp[14][14][16500];
signed main(){
int t,n,m;
cin>>t;
while(t--){
cin>>n>>m;
memset(dp,0,sizeof(dp));
dp[0][m][0]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++) cin>>mp[i][j];
}
for(int i=i;i<=n;i++){
for(int k=0;k<1<<m;k++) if(k&1==0) dp[i+1][1][k]=dp[i][m][k];
for(int j=1;j<=m;j++){
if(!mp[i][j]){
for(int k=0;k<1<<m;k++){
if(k&1==0 && k&1<<j==0){
dp[i][j+1][k]=dp[i][j][k];
} else dp[i][j][k]=0;
}
} else {
for(int k=0;k<1<<m;k++){
if(k&1==0){
if(k&1<<j==0){
if(i!=n && j!=m) dp[i][j+1][k+(1<<j)+1]+=dp[i][j][k];
} else {
if(i!=n) dp[i][j+1][k]+=dp[i][j][k];
if(j!=m) dp[i][j+1][k-(1<<j)+1]+=dp[i][j][k];
}
} else {
if(k&1<<j==0){
if(j!=m) dp[i][j+1][k]+=dp[i][j][k];
if(i!=n) dp[i][j+1][k+(1<<j)-1]+=dp[i][j][k];
} else {
dp[i][j+1][k-(1<<j)-1]+=dp[i][j][k];
}
}
}
}
}
}
cout<<dp[n][m][0]<<endl;
}
return 0;
}