#include <iostream>
#include <cstring>
#include <sstream>
#include <cstdio>
#define MAX 101
using namespace std;
long long int MAP[MAX][MAX];
bool BMap[MAX][MAX];
int W, N;
void init();
void trace();
int main()
{
int T;
while(cin >> T)
while(T--)
{
init();
trace();
cout << MAP[W-1][N-1] << endl;
}
return 0;
}
void init()
{
memset(MAP, 0, 4*MAX*MAX);
memset(BMap, false, MAX*MAX);
cin >> W >> N;
getchar();
for(int i = 0; i<N; i++)
MAP[0][i] = 1;
for(int i = 0; i<W; i++)
MAP[i][0] = 1;
stringstream ss;
string str;
int row, col;
for(int i = 0; i<W; i++)
{
getline(cin, str);
ss.clear();
ss.str(str);
ss >> row;
while(ss >> col)
{
BMap[row-1][col-1] = true;
MAP[row-1][col-1] = 0;
}
}
}
void trace()
{
for(int row = 1; row < W; row++)
for(int col = 1; col < N; col++)
{
if(BMap[row][col])
continue;
MAP[row][col] = MAP[row][col-1] + MAP[row-1][col];
}
}