#include <bits/stdc++.h>
using namespace std;
#define int long long
#define dd double
#define ld long double
#define ull unsigned long long
#define yes cout << "YES\n"
#define no cout << "NO\n"
#define el "\n"
#define Arwa ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define fix(x) cout << fixed << setprecision(x)
#define all(v) v.begin(),v.end()
#define dpp(v,val) memset(v,val,sizeof(v))
#define mod 1e9+7
#define oo 1e9
const int N = 1e5 + 5;
int n,m;
vector<vector<int>>v;
map<pair<int,int>,bool>mp;
int dp[1003][1003];
bool valid(int i,int j)
{
if(mp[{i,j}]==1) return false;
return (i>=1&&i<=n&&j>=1&&j<=m);
}
int solve(int i,int j)
{
if(!valid(i,j)) return 0;
int& ret =dp[i][j];
if(ret!=-1) return ret;
if(i==n&&j==m) return 1;
ret=solve(i,j+1)+solve(i+1,j);
return ret;
}
void HereWeGoAgain()
{
cin>>n>>m;
cin.ignore();
v.resize(n);
for(int i=0;i<n;i++)
{
string s;
getline(cin,s);
for(int j=1;j<s.length();j++)
{
if(s[j]!=' ')
mp[{i+1,(s[j]-'0')}]=1;
}
}
dpp(dp,-1);
//for(auto it:mp) if(it.second) cout<<it.first.first<<' '<<it.first.second<<el;
cout<<solve(1,1);
}
int32_t main()
{
Arwa
int t=1;
cin>>t;
cout<<el<<el;
for(int i=1;i<=t;i++)
{
HereWeGoAgain();
cout<<el<<el;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGRkIGRvdWJsZQojZGVmaW5lIGxkIGxvbmcgZG91YmxlCiNkZWZpbmUgdWxsIHVuc2lnbmVkIGxvbmcgbG9uZwojZGVmaW5lIHllcyBjb3V0IDw8ICJZRVNcbiIKI2RlZmluZSBubyBjb3V0IDw8ICJOT1xuIgojZGVmaW5lIGVsICJcbiIKI2RlZmluZSBBcndhIGlvczo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKI2RlZmluZSBmaXgoeCkgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oeCkKI2RlZmluZSBhbGwodikgdi5iZWdpbigpLHYuZW5kKCkKI2RlZmluZSBkcHAodix2YWwpIG1lbXNldCh2LHZhbCxzaXplb2YodikpCiNkZWZpbmUgbW9kIDFlOSs3CiNkZWZpbmUgb28gMWU5CmNvbnN0IGludCBOID0gMWU1ICsgNTsKaW50IG4sbTsKdmVjdG9yPHZlY3RvcjxpbnQ+PnY7Cm1hcDxwYWlyPGludCxpbnQ+LGJvb2w+bXA7CmludCBkcFsxMDAzXVsxMDAzXTsKYm9vbCB2YWxpZChpbnQgaSxpbnQgaikKewogICAgaWYobXBbe2ksan1dPT0xKSByZXR1cm4gZmFsc2U7CiAgICByZXR1cm4gKGk+PTEmJmk8PW4mJmo+PTEmJmo8PW0pOwp9CmludCBzb2x2ZShpbnQgaSxpbnQgaikKewogIGlmKCF2YWxpZChpLGopKSByZXR1cm4gMDsKICBpbnQmIHJldCA9ZHBbaV1bal07CiAgaWYocmV0IT0tMSkgcmV0dXJuIHJldDsKICBpZihpPT1uJiZqPT1tKSByZXR1cm4gMTsKICByZXQ9c29sdmUoaSxqKzEpK3NvbHZlKGkrMSxqKTsKICByZXR1cm4gcmV0Owp9CnZvaWQgSGVyZVdlR29BZ2FpbigpCnsKICAgIGNpbj4+bj4+bTsKICAgIGNpbi5pZ25vcmUoKTsKICAgIHYucmVzaXplKG4pOwogICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgIHsKICAgICAgICBzdHJpbmcgczsKICAgICAgICBnZXRsaW5lKGNpbixzKTsKICAgICAgICBmb3IoaW50IGo9MTtqPHMubGVuZ3RoKCk7aisrKQogICAgICAgIHsKICAgICAgICBpZihzW2pdIT0nICcpCiAgICAgICAgbXBbe2krMSwoc1tqXS0nMCcpfV09MTsKICAgICAgICB9CiAgICB9CiAgICBkcHAoZHAsLTEpOwogICAvL2ZvcihhdXRvIGl0Om1wKSBpZihpdC5zZWNvbmQpIGNvdXQ8PGl0LmZpcnN0LmZpcnN0PDwnICc8PGl0LmZpcnN0LnNlY29uZDw8ZWw7CiAgIGNvdXQ8PHNvbHZlKDEsMSk7Cn0KaW50MzJfdCBtYWluKCkgCnsKICAgIEFyd2EKICAgIGludCB0PTE7CiAgICBjaW4+PnQ7CiAgICBjb3V0PDxlbDw8ZWw7CiAgICBmb3IoaW50IGk9MTtpPD10O2krKykKICAgIHsKICAgIEhlcmVXZUdvQWdhaW4oKTsKICAgIGNvdXQ8PGVsPDxlbDsKICAgIH0KICAgIHJldHVybiAwOwp9IA==