SP37 PROPKEY - The Proper Key

题目描述

许多人认为俄罗斯方块是由两位俄罗斯程序员发明的,然而这并不是真正事实。 游戏的主意出现得很早——甚至可以追溯到埃及。 不过他们并不是把它当作一个游戏。 相反,它被用作复杂的锁。 锁是由木头制成的,其中有许多的正方形区块,这些区块按照行和列来排列。 每个区块要么是被填充上木块,要么是空的。 这个锁的密钥是平面的,它能够插入锁中的空格区域。 相当于有一个平面锁和平面密钥,密钥可以从顶部插入到锁。但密钥不能向上移动,它只能下降和左右滑动——与俄罗斯方块游戏一样。 唯一的区别在于密钥不能旋转, 而俄罗斯方块的旋转确实是俄罗斯发明。 金字塔的入口就有这样的锁。 ACM 的考古学家发现了几把密钥,很有可能有其中一个是可以开锁的。现在他们需要试一下,然后找出哪个能用。 把每个密钥试一遍太耗时,所以最好先从那些能被插入更深的密钥开始。 请设计一个程序确定给定的密钥是否可以插入给定的锁。

输入格式

输入由 $T$ 组数据组成。 输入文件的第一行上给出密钥的数目 $T$ 。 每个测试样例都占若干行, 第一行包含两个整数 $R$ 和 $C$ $ (1 \le R$, $C \le 100)$, 表示密钥大小。 然后是 $R$ 行,每个行都包含 $C$ 个字符。每个字符要么是(``#``),要么是(``.``)。 ``#``表示一个正方形木块;``.``表示一个空格子。 木块总是连在一起的。也就是说,整把密钥是由一组连接的木块构成的。 此外,即使我们从顶部切断任意行的木块,密钥仍然是连接的。 在最上、最下、最左和最右的列中,总是至少有一个非空区块。 在输入密钥后,再输入一行,包含两个整数 $D$ 和 $W$ $(1 \le D \le 10000$, $1 \le W \le 1000)$. $W$ 是锁的宽度,$D$ 是它的深度。 接下来的 $D$ 行,每行包含$W$ 个字符。 字符可以是(``#``)(代表木块),也可以是(``.``)(空格子)(同上)。

输出格式

每个测试样例输出一行。 每行输出"``The key falls to depth X.``",即密钥最多下降 $x$ 深度(若能穿过整个锁,则输出“``The key can fall through.``”)。 左右移动密钥插入锁中,深度 $x$ 即为密钥的底部和锁的顶部之间的距离。

说明/提示

**注意:输入数据较大。**