#include <iostream>

using namespace std;

int n,gx,gy;//秘密の場所ｇｘｇｙ
int matatabi[110][4];//またたびの座標
int num_m;//またたびのカズ

int ans(int x,int y){
  if (x<0||y<0)
  {
    return 0;
  }
  if (x==0 && y==0)
  {
    return 1;
  }
  bool flag1=true;
  bool flag2=true;
  for (int i = 0; i < num_m; ++i)
  {
    if((matatabi[i][0]==x-1 && matatabi[i][1]==y &&matatabi[i][2]== x &&matatabi[i][3]== y)||(matatabi[i][2]==x-1 && matatabi[i][3]==y &&matatabi[i][0]== x &&matatabi[i][1]== y))flag1=false;
    if((matatabi[i][0]==x && matatabi[i][1]==y-1 &&matatabi[i][2]== x &&matatabi[i][3]== y)||(matatabi[i][2]==x && matatabi[i][3]==y-1 &&matatabi[i][0]== x &&matatabi[i][1]== y)) flag2=false;
  }
  if (flag1 == true && flag2==true)
  {
    return ans(x,y-1)+ans(x-1,y);
  }
  if (flag1 == false && flag2==false)
  {
    return 0;
  }
  if (flag1==false)
  {
    return ans(x,y-1);
  }else{
    return ans(x-1,y);
  }

}
int main(){
  cin >> n;
  for (int i = 0; i < n; ++i)
  {
    cin >> gx >> gy;
    cin >> num_m;
    for (int j = 0; j < num_m; ++j)
    {
      cin >> matatabi[j][0]>>matatabi[j][1]>>matatabi[j][2]>>matatabi[j][3];
    }
    if (ans(gx,gy)!=0)
    {
      cout << ans(gx,gy) <<endl;
    }else
    {
      cout <<"Miserable Hokusai!" <<endl;
    }
  }

}