#include<stdio.h>
#include<string.h>
int a[7][7],b[7][7];
int sum,n,m;
void dfs(int x,int y)
{
if(x==n-1&&y==m-1) sum++;
if(!b[x+1][y]&&!a[x+1][y]&&x+1<n)
{
b[x+1][y]=1;
dfs(x+1,y);
b[x+1][y]=0;
}
if(!b[x-1][y]&&!a[x-1][y]&&x-1>=0)
{
b[x-1][y]=1;
dfs(x-1,y);
b[x-1][y]=0;
}
if(!b[x][y+1]&&!a[x][y+1]&&y+1<m)
{
b[x][y+1]=1;
dfs(x,y+1);
b[x][y+1]=0;
}
if(!b[x][y-1]&&!a[x][y-1]&&y-1>=0)
{
b[x][y-1]=1;
dfs(x,y-1);
b[x][y-1]=0;
}
}
int main()
{
int s;
scanf("%d",&s);
while(s--)
{
int i,j;
memset(b,0,sizeof(b));
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
sum=0;
b[0][0]=1;
dfs(0,0);
printf("%d\n\n",sum);
}
return 0;
}
#include<string.h>
int a[7][7],b[7][7];
int sum,n,m;
void dfs(int x,int y)
{
if(x==n-1&&y==m-1) sum++;
if(!b[x+1][y]&&!a[x+1][y]&&x+1<n)
{
b[x+1][y]=1;
dfs(x+1,y);
b[x+1][y]=0;
}
if(!b[x-1][y]&&!a[x-1][y]&&x-1>=0)
{
b[x-1][y]=1;
dfs(x-1,y);
b[x-1][y]=0;
}
if(!b[x][y+1]&&!a[x][y+1]&&y+1<m)
{
b[x][y+1]=1;
dfs(x,y+1);
b[x][y+1]=0;
}
if(!b[x][y-1]&&!a[x][y-1]&&y-1>=0)
{
b[x][y-1]=1;
dfs(x,y-1);
b[x][y-1]=0;
}
}
int main()
{
int s;
scanf("%d",&s);
while(s--)
{
int i,j;
memset(b,0,sizeof(b));
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
sum=0;
b[0][0]=1;
dfs(0,0);
printf("%d\n\n",sum);
}
return 0;
}