#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <iostream>
#include <cstdlib>
#include <vector>
#include <list>
#include <set>
#include <deque>
#include <utility>
#include <cmath>
#include <string>
#include <cstring>
#include <iomanip>
#include <cctype>
#include <algorithm>
#include <numeric>
#include <queue>
#include <any>
#define Yellow_Flash \
ios_base::sync_with_stdio(0); \
cin.tie(0); \
cout.tie(0)
#define pi 3.14159265358979323
#define el "\n"
#define ll long long
#define sp ' '
#define MAX INT_MAX
#define MIN INT_MIN
#define all(_) _.begin(),_.end()
#define rall(_) _.rbegin(),_.rend()
#define input(_) for(auto & i : _) cin >> i;
#define input2(_) for(auto & i : _) for(auto &j : i) cin >> j;
#define output(_) for(auto & i : _) cout << i << sp;
#define output2(_) for(auto & i : _) for(auto &j : i) cout << j << sp;
#define uniq(_) _.erase(unique(all(_)), _.end())
#define point(_) cout << fixed << setprecision(_);
using namespace std;
// using namespace __gnu_pbds;
// typedef tree<int, null_type, greater<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;
void YelloW_Flash(){
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
Yellow_Flash;
}
bool comp(string &a, string & b)
{
if(a.size()==b.size()) return a<b;
return a.size()<b.size();
}
ll fixmod(ll a, ll b){
return (a%b+b)%b;
}
const int sz1=1e2+5,sz2=1e2+5;
ll dp[sz1][sz2];
ll n, m;
// vector<ll> v;
set<pair<ll,ll>> idx;
ll rec (ll i=1, ll j=1){
if(i>n || j>m || (!idx.empty() && idx.count({i,j}))) return 0;
if(i==n && j==m) return 1;
ll & ret = dp[i][j];
if(ret!=-1) return ret;
ll ch1=rec(i+1,j);
ll ch2=rec(i,j+1);
return ret=ch1+ch2;
}
int main()
{
YelloW_Flash();
ll T=1;
cin >> T;
while(T--){
memset(dp,-1LL, sizeof(dp));
idx.clear();
string s;
getline(cin,s);
cin >> n >> m;
getline(cin,s);
for(int i=1; i<=n; ++i){
string x, num;
getline(cin,x);
for(int j=log(i)+1; j<x.size(); ++j){
if(isdigit(x[j])) num+=x[j];
else {
if(!num.empty()) {
ll numm=stoll(num);
idx.insert({i,numm});
}
num.clear();
}
}
if(!num.empty()) {
ll numm=stoll(num);
idx.insert({i,numm});
}
num.clear();
}
for(auto &[i,j]: idx) cout << i << sp << j << el;
cout << rec() << el;
cout << el;
}
return 0;
}
/* Fight not to be the Winner ,but to be the last one to lose */
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxsaXN0PgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8ZGVxdWU+CiNpbmNsdWRlIDx1dGlsaXR5PgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxjc3RyaW5nPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNjdHlwZT4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPG51bWVyaWM+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPGFueT4KI2RlZmluZSBZZWxsb3dfRmxhc2ggICAgICAgICAgICAgIFwKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IFwKICAgIGNpbi50aWUoMCk7ICAgICAgICAgICAgICAgICAgIFwKICAgIGNvdXQudGllKDApCiNkZWZpbmUgcGkgMy4xNDE1OTI2NTM1ODk3OTMyMwojZGVmaW5lIGVsICJcbiIKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBzcCAnICcKI2RlZmluZSBNQVggSU5UX01BWAojZGVmaW5lIE1JTiBJTlRfTUlOCiNkZWZpbmUgYWxsKF8pIF8uYmVnaW4oKSxfLmVuZCgpCiNkZWZpbmUgcmFsbChfKSBfLnJiZWdpbigpLF8ucmVuZCgpCiNkZWZpbmUgaW5wdXQoXykgZm9yKGF1dG8gJiBpIDogXykgY2luID4+IGk7CiNkZWZpbmUgaW5wdXQyKF8pIGZvcihhdXRvICYgaSA6IF8pIGZvcihhdXRvICZqIDogaSkgY2luID4+IGo7CiNkZWZpbmUgb3V0cHV0KF8pIGZvcihhdXRvICYgaSA6IF8pIGNvdXQgPDwgaSA8PCBzcDsKI2RlZmluZSBvdXRwdXQyKF8pIGZvcihhdXRvICYgaSA6IF8pIGZvcihhdXRvICZqIDogaSkgY291dCA8PCBqIDw8IHNwOwojZGVmaW5lIHVuaXEoXykgXy5lcmFzZSh1bmlxdWUoYWxsKF8pKSwgXy5lbmQoKSkKI2RlZmluZSBwb2ludChfKSBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbihfKTsKCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwovLyB1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKCi8vIHR5cGVkZWYgdHJlZTxpbnQsIG51bGxfdHlwZSwgZ3JlYXRlcjxpbnQ+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPiBwYmRzOwoKdm9pZCBZZWxsb1dfRmxhc2goKXsKICAgICNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiAgICAjZW5kaWYKICAgIFllbGxvd19GbGFzaDsKfQoKYm9vbCBjb21wKHN0cmluZyAmYSwgc3RyaW5nICYgYikKewogICAgaWYoYS5zaXplKCk9PWIuc2l6ZSgpKSByZXR1cm4gYTxiOwogICAgcmV0dXJuIGEuc2l6ZSgpPGIuc2l6ZSgpOwp9CgpsbCBmaXhtb2QobGwgYSwgbGwgYil7CiAgICByZXR1cm4gKGElYitiKSViOwp9CmNvbnN0IGludCBzejE9MWUyKzUsc3oyPTFlMis1OwpsbCBkcFtzejFdW3N6Ml07CmxsIG4sIG07Ci8vIHZlY3RvcjxsbD4gdjsKc2V0PHBhaXI8bGwsbGw+PiBpZHg7CmxsIHJlYyAobGwgaT0xLCBsbCBqPTEpewogICAgaWYoaT5uIHx8IGo+bSB8fCAoIWlkeC5lbXB0eSgpICYmIGlkeC5jb3VudCh7aSxqfSkpKSByZXR1cm4gMDsKICAgIGlmKGk9PW4gJiYgaj09bSkgcmV0dXJuIDE7CiAgICBsbCAmIHJldCA9IGRwW2ldW2pdOwogICAgaWYocmV0IT0tMSkgcmV0dXJuIHJldDsKICAgIGxsIGNoMT1yZWMoaSsxLGopOwogICAgbGwgY2gyPXJlYyhpLGorMSk7CiAgICByZXR1cm4gcmV0PWNoMStjaDI7Cn0KCgoKaW50IG1haW4oKQp7CiAgICBZZWxsb1dfRmxhc2goKTsKICAgIGxsIFQ9MTsKICAgIGNpbiA+PiBUOwogICAgd2hpbGUoVC0tKXsKICAgICAgICBtZW1zZXQoZHAsLTFMTCwgc2l6ZW9mKGRwKSk7CiAgICAgICAgaWR4LmNsZWFyKCk7CiAgICAgICAgc3RyaW5nIHM7CiAgICAgICAgZ2V0bGluZShjaW4scyk7CiAgICAgICAgY2luID4+IG4gPj4gbTsKICAgICAgICBnZXRsaW5lKGNpbixzKTsKICAgICAgICBmb3IoaW50IGk9MTsgaTw9bjsgKytpKXsKICAgICAgICAgICAgc3RyaW5nIHgsIG51bTsKICAgICAgICAgICAgZ2V0bGluZShjaW4seCk7CiAgICAgICAgICAgIGZvcihpbnQgaj1sb2coaSkrMTsgajx4LnNpemUoKTsgKytqKXsKICAgICAgICAgICAgICAgIGlmKGlzZGlnaXQoeFtqXSkpIG51bSs9eFtqXTsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmKCFudW0uZW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBsbCBudW1tPXN0b2xsKG51bSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlkeC5pbnNlcnQoe2ksbnVtbX0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBudW0uY2xlYXIoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZighbnVtLmVtcHR5KCkpIHsKICAgICAgICAgICAgICAgIGxsIG51bW09c3RvbGwobnVtKTsKICAgICAgICAgICAgICAgIGlkeC5pbnNlcnQoe2ksbnVtbX0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG51bS5jbGVhcigpOwogICAgICAgIH0KICAgICAgICBmb3IoYXV0byAmW2ksal06IGlkeCkgY291dCA8PCBpIDw8IHNwIDw8IGogPDwgZWw7CiAgICAgICAgY291dCA8PCByZWMoKSA8PCBlbDsKICAgICAgICBjb3V0IDw8IGVsOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCiAgICAgICAgICAgICAgICAvKiBGaWdodCBub3QgdG8gYmUgdGhlIFdpbm5lciAsYnV0IHRvIGJlIHRoZSBsYXN0IG9uZSB0byBsb3NlICovCg==