你曾经去过 Google 旅鼠工厂吗?那是一个非常不同寻常的地方。工厂的地板被划分为一个 $R \times C$ 的网格。每个网格方块内都有一条传送带,其方向可以是上下、左右,或者沿两条对角线之一。传送带可以沿着它们的方向向前或向后移动,你可以独立选择每条传送带移动的两个可能方向中的哪一个。
目前,每个方块的中心都站着一只旅鼠。当你启动传送带时,每只旅鼠都会沿着它所在的传送带方向移动,直到到达一个新的方块中心。所有这些移动同时发生,且恰好耗时一秒。之后,旅鼠们都会处于新的方块中,该过程将从它们的新位置重复进行。这个过程会永远持续下去,或者至少持续到你关闭传送带为止。
- 当旅鼠进入一个新方块时,它会继续沿着原有的方向移动,直到到达该方块的中心。在下一秒开始之前,它不会受到新方块传送带的影响。
- 如果旅鼠移出了网格边缘,它会从对侧的相同位置重新进入。例如,如果它从左上角的方块向左上方移动,它会到达右下角的方块。得益于科学的奇迹,整个过程仍然只耗时 1 秒。
- 旅鼠永远不会发生碰撞,并且总是可以毫无困难地相互穿过。
诀窍在于为每条传送带选择方向,使得旅鼠能够永远移动下去,而不会有两只旅鼠在同一时间到达同一个方块的中心。如果发生了这种情况,它们就会从那时起被困在一起,这对它们来说可没那么有趣。
以下是针对之前示例中每条传送带分配方向的两种方式:
在这两种情况下,我们都避免了让两只旅鼠在同一时间到达同一个方块的中心。
给定一个任意的地板布局,计算 $N$,即选择每条传送带方向的方法数,使得没有任何两只旅鼠会在同一时间到达同一个方块的中心。答案可能非常大,请输出其对 $1000003$ 取模的结果。
输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含正整数 $R$ 和 $C$。
随后是 $R$ 行,每行包含一个由 $C$ 个字符组成的字符串,字符选自 |-/\。每个字符代表单个方块中传送带的朝向:
|代表可以上下移动的传送带。-代表可以左右移动的传送带。/代表可以向右上或左下移动的传送带。\代表可以向左上或右下移动的传送带。
对于每个测试用例,输出一行 "Case #x: $M$",其中 $x$ 是用例编号(从 1 开始),$M$ 是 $N$ 除以 $1000003$ 的余数。
样例
输入格式 1
3 3 3 |-/ ||| --| 3 4 ---- |||| \\// 4 4 |--- \-\| \||| |--\
输出格式 1
Case #1: 2 Case #2: 0 Case #3: 16