# Include <stdio. h>
# Include <ctype. h>
# Include <string. h>
Char grid [60] [60];
Char word [60];
Int direct [8] [2] = {
0, 1,
0,-1,
1, 0,
-1, 0,
1, 1,
-1,-1,
1,-1,
-1, 1,
};
Void search (char * word, int M, int N)
{
Int I, J;
Int Len = strlen (Word );
For (I = 0; I <m; I ++)
For (j = 0; j <n; j ++)
{
Int k;
For (k = 0; k <8; k ++)
{
Int l;
Int cur_x;
Int cur_y;
For (l = 0; l <len; l ++)
{
Cur_x = I + l * direct [k] [0];
Cur_y = j + l * direct [k] [1];
If (cur_x <0 |
Cur_x> = m |
Cur_y <0 |
Cur_y> = n |
Grid [cur_x] [cur_y]! = Word [l])
Break;
}
If (l = len)
{
Printf ("% d/n", I + 1, j + 1 );
Return;
}
}
}
}
Void str_tolower (char * s)
{
Int Len = strlen (s );
Int I;
For (I = 0; I <Len; I ++)
S [I] = tolower (s [I]);
}
Int main ()
{
Int times;
Int M, N;
Scanf ("% d", & times );
Int I;
For (I = 0; I <times; I ++)
{
If (I> 0)
Printf ("/n ");
Scanf ("% d", & m, & n );
Int j;
For (j = 0; j <m; j ++)
{
Scanf ("% s", grid [j]);
Str_tolower (grid [j]);
}
Int nwords;
Scanf ("% d", & nwords );
For (j = 0; j <nwords; j ++)
{
Scanf ("% s", word );
Str_tolower (word );
Search (word, m, n );
}
}
Return 0;
}