#include<cstdio>#include<iostream>using namespace std;typedef struct step{int x,y;char direction;}step;step steps[10000];int maps[101][101];int m,n,nSteps;bool move(int& x,int& y, char d){if (d=='U'){if ( x>1 && maps[x-1][y]==0 ){x--;return true;}return false;}if (d=='D'){if ( x<n && maps[x+1][y]==0 ){x++;return true;}return false;}if (d=='L'){if ( y>1 && maps[x][y-1]==0 ){y--;return true;}return false;}if (d=='R'){if ( y<m && maps[x][y+1]==0 ){y++;return true;}return false;}return false;}int walk(int x,int y,int k){if (x<1||x>n||y<1||y>m||maps[x][y]==1)return 0;if ( k==nSteps)return 1;int i=1;int tx=x;int ty=y;char dir=steps[k].direction;for(;i<=steps[k].x-1;i++){if(!move(tx,ty,dir))return 0;}for(;i<=steps[k].y;i++){if(move(tx,ty,dir)){if (walk(tx,ty,k+1))return 1;}elsebreak;}return 0;}int main(){int k,t;int i,j,tx,ty;int count=0;char ch;scanf("%d",&k);while(k--){t=0;count=0;nSteps=0;scanf("%d%d",&n,&m);for(i=1;i<=n;i++)for(j=1;j<=m;j++)scanf("%d",&maps[i][j]);while(1){scanf("%d%d",&tx,&ty);if(tx==0 || ty==0)break;steps[t].x = tx;steps[t].y = ty;scanf(" %c",&ch);steps[t].direction = ch;t++;nSteps++;}for(i=1;i<=n;i++)for(j=1;j<=m;j++)count += walk(i,j,0);printf("%dn",count);}return 0;}


