D. Решить лабиринт
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Vivek столкнулся с интересной задачей. У него есть лабиринт, который можно описать таблицей $$$n \times m$$$. Каждая клетка может быть одного из следующих типов:

  • Пустая — '.'
  • Стена — '#'
  • Хороший человек  — 'G'
  • Плохой человек — 'B'

Единственный выход из лабиринта находится в клетке $$$(n, m)$$$.

Человек может перейти в клетку если она не содержит стену и она имеет общую сторону с его текущей клеткой. Vivek хочет заблокировать (заменить на стены) некоторые пустые клетки, чтобы все хорошие люди могли дойти до выхода из лабиринта, но чтобы все плохие люди не могли. Клетку которая исходно содержит 'G' или 'B' нельзя блокировать, но через нее можно проходить.

Ваша задача  — определить, можно ли заменить несколько (ноль или более) пустых клеток на стены, чтобы удовлетворить описанным ограничениям.

Гарантируется, что клетка $$$(n,m)$$$ пустая. Vivek разрешается ее блокировать.

Входные данные

В первой строке записано одно целое число $$$t$$$ $$$(1 \le t \le 100)$$$ — количество наборов входных данных. Далее следуют описания наборов входных данных.

В первой строке каждого набора входных данных записаны два целых числа $$$n$$$, $$$m$$$ $$$(1 \le n, m \le 50)$$$ — количество строк и столбцов в лабиринте.

В каждой из следующих $$$n$$$ строк записаны $$$m$$$ символов. Они описывают исходный лабиринт. Если символ в строке равен '.', тогда соответствующая клетка пустая, если символ равен '#', тогда клетка содержит стену, а 'G' и 'B' обозначают, что клетка содержит хорошего или плохого человека, соответственно.

Выходные данные

Для каждого набора входных данных, выведите «Yes» или «No», в зависимости от того, можно ли заменить некоторые пустые клетки на стены, чтобы удовлетворить описанным ограничениям.

Вы можете выводить каждую букву в любом регистре (верхнем или нижнем).

Пример
Входные данные
6
1 1
.
1 2
G.
2 2
#B
G.
2 3
G.#
B#.
3 3
#B.
#..
GG.
2 2
#B
B.
Выходные данные
Yes
Yes
No
No
Yes
Yes
Примечание

В первом и во втором наборах входных данных все условия уже выполнены.

В третьем наборе входных данных есть только одна свободная клетка $$$(2,2)$$$, и если мы заменим ее на стену, то хороший человек в клетке $$$(1,2)$$$ не сможет выйти.

В четвертом наборе входных данных хороший человек в клетке $$$(1,1)$$$ не может сбежать с самого начала, поэтому ответ «No».

В пятом наборе входных данных можно заблокировать клетки $$$(2,3)$$$ и $$$(2,2)$$$.

В последнем наборе входных данных можно заблокировать выход $$$(2, 2)$$$.