Tom 开发了一种特殊的拼图:它包含许多相同的拼图块。这些拼图块由三个相邻的正方形组成,呈 L 形。转角处的正方形为黑色,与之相邻的两个正方形为白色。
一个拼图块
拼图者会得到一个由黑色和白色正方形组成的矩形网格图案。挑战在于使用这些拼图块拼出该图案。拼图块可以旋转,但不能重叠。
Tom 已经设计了一些精美的图案,但他需要找出这些图案是否能够完全由这些拼图块构成。与其手动测试每个图案,他想编写一个计算机程序来帮他判断。你能帮帮他吗?
输入格式
第一行包含一个正整数:测试用例的数量,最多为 100。之后每个测试用例包含:
- 一行包含两个整数 $n$ 和 $m$ ($1 \le n, m \le 500$),分别表示包含图案的网格的高度和宽度。
- $n$ 行,每行包含 $m$ 个字符,表示网格。每个字符为 'B'、'W' 或 '.',分别表示黑色、白色或空的正方形。
网格中至少包含一个黑色或白色正方形。
输出格式
对于每个测试用例:
- 输出一行 "YES" 或 "NO",表示是否可以使用这些拼图块构成该图案。你可以假设拼图块有无限供应。
样例
输入 1
2 3 4 BWW. WWBW ..WB 3 3 W.. BW. WBW
输出 1
YES NO