巫师 Harry 喜欢烘焙。有一天,他发现了一个咒语,可以将他传送到“后室”(这个双关语仅在瑞典语中有效),他为此感到非常高兴。然而,当他使用这个咒语时,他并没有被传送到面包店,而是被传送到一个无限大的网格中。网格中的每个单元格要么是空的,要么是被阻挡的。在网格中,你可以向上、下、左或右移动到相邻的非阻挡单元格。在四处走动了一会儿后,他注意到被阻挡单元格的模式是周期性的。更准确地说,有一个 $R \times C$ 的模式在无限重复。具体工作方式请参见下图。
样例 1 可视化。 基础模式以红色标记。$(0,0)$ 未被阻挡,而 $(1,1)$ 被阻挡。第一个问题的坐标绘制在 $(2,4)$ 和 $(4,3)$。自然地,网格在绘制范围之外无限延伸。
为了逃脱,他需要到达网格中的某个特定单元格。然而,他的传送魔法有点生疏,所以他会问你 $Q$ 个问题,形式如下:“如果我传送到单元格 $(s_x, s_y)$,我能走到单元格 $(g_x, g_y)$ 吗?”
输入
第一行包含两个整数 $R$ 和 $C$ ($1 \leq R,C \leq 1000$),表示网格的行数和列数。
接下来的 $R$ 行,每行包含一个长度为 $C$ 的字符串,由字符 . 和 # 组成。这些是网格的行。字符 # 表示该单元格被阻挡,. 表示该单元格是空的。
随后是一行,包含整数 $Q$ ($1 \leq Q \leq 10^5$),表示你需要回答的问题数量。
接下来的 $Q$ 行,每行包含四个整数 $s_x, s_y, g_x, g_y$ ($0 \leq s_x, s_y, g_x, g_y \leq 10^{12}$),表示问题的坐标。保证这些坐标处的单元格均未被阻挡。
输出
对于每个问题,如果 Harry 可以从单元格 $(s_x, s_y)$ 走到单元格 $(g_x, g_y)$,则打印 Yes,否则打印 No。
评分
你的解决方案将在多组测试用例上进行测试。要获得某一组的分数,你必须通过该组中的所有测试用例。
| Group | Points | Constraints |
|---|---|---|
| 1 | 7 | $R, C \leq 2$, $Q \leq 5$, $s_x, s_y, g_x, g_y \leq 500$ |
| 2 | 4 | $R, C, Q \leq 5$, $s_x, s_y, g_x, g_y \leq 500$ |
| 3 | 8 | $R, C, Q \leq 5$, $s_x, s_y, g_x, g_y \leq 10^5$ |
| 4 | 25 | $R, C, Q \leq 5$ |
| 5 | 15 | $R, C \leq 5$ |
| 6 | 21 | $R, C \leq 25$ |
| 7 | 20 | 无额外限制。 |
样例
输入格式 1
3 3 #.# .#. ..# 5 2 4 4 3 0 0 2 1 0 0 0 0 900000002 900000004 900000004 900000003 2 1 1 2
输出格式 1
Yes No Yes Yes No
说明
- 问题 1:Harry 从 $(2,4)$ 出发,想要移动到 $(4,3)$。为此,他可以向右、向下再向右移动。
- 问题 2:起点和终点被墙壁隔开,因此答案是
No。 - 问题 3:Harry 已经在终点,所以他瞬间完成了任务。
- 问题 4:即使我们在很远的地方,网格依然在延伸。答案是
Yes。 - 问题 5:同样,起点和终点被墙壁隔开。