网格艺术家 Brue 有一个大小为 $N \times M$ 的网格。我们用 $(r, c)$ 表示从上往下的第 $r$ 行、从左往右的第 $c$ 列的单元格。Brue 计划将网格切割成多个碎片。
为了切割网格,Brue 首先需要决定每个 $NM$ 单元格的切割方向。对于每个单元格,切割应当沿着其两条对角线之一进行。
下图展示了一个切割 $4 \times 4$ 网格的例子。
在上述例子中,网格被切割成了 9 个碎片。
如果一个碎片满足以下条件,则被称为美丽的:
- 该碎片可以经过适当的旋转,使得构成其边界的线段要么平行于 $x$ 轴,要么平行于 $y$ 轴。
- 根据碎片的切割方式,碎片上可能会有孔洞或切口。在这种情况下,必须能够旋转该碎片,使得构成这些部分的线段也平行于 $x$ 轴或 $y$ 轴。在下图中,左边是一个带有孔洞的美丽碎片的例子,右边是一个带有切口的美丽碎片的例子。(对应的碎片用绿色标记。)
在探索如何更美观地切割网格时,Brue 对网格的边产生了兴趣。在这里,“边”的定义如下:
- 位于两个垂直相邻的网格单元之间的长度为 1 的线段称为水平边。
- 位于两个水平相邻的网格单元之间的长度为 1 的线段称为垂直边。
- 我们把水平边和垂直边统称为边。
根据定义,在大小为 $N \times M$ 的网格中,有 $(N - 1)M$ 条水平边和 $N(M - 1)$ 条垂直边。
Brue 已经决定了其中一些 $NM$ 单元格的切割方向,但其余的尚未决定。此外,Brue 希望 $K$ 条特定的边能够位于美丽的碎片内部。(这些边不需要包含在同一个碎片中。)
请判断是否可以以满足上述条件的方式切割网格,如果可以,请找到一种方案。
输入格式
输入的第一行包含三个空格分隔的整数 $N, M$ 和 $K$。($2 \le N \le 50$;$2 \le M \le 50$;$0 \le K \le (N - 1)M + N(M - 1)$)
接下来的 $N$ 行中,第 $r$ 行包含 $M$ 个字符 $C_{r,1}, C_{r,2}, \dots, C_{r,M}$,表示每个单元格的切割方向。$C_{r,c}$ 是 /、\ 或 . 之一。
- 如果 $C_{r,c}$ 是
/或\,它表示单元格 $(r, c)$ 的切割方向。 - 如果 $C_{r,c}$ 是
.,它表示单元格 $(r, c)$ 的切割方向尚未决定。
接下来的 $K$ 行中,第 $i$ 行包含三个空格分隔的整数 $d_i, a_i$ 和 $b_i$,表示要包含在美丽碎片内部的第 $i$ 条边。这 $K$ 条边两两不同。($0 \le d_i \le 1$;$1 \le a_i \le N - (1 - d_i)$;$1 \le b_i \le M - d_i$)
- 如果第 $i$ 条边是水平边,则 $d_i = 0$,且该边上方的单元格为 $(a_i, b_i)$。
- 如果第 $i$ 条边是垂直边,则 $d_i = 1$,且该边左侧的单元格为 $(a_i, b_i)$。
输出格式
如果可以切割网格使得给定的 $K$ 条边都位于美丽的碎片内部,在第一行输出 YES。
在接下来的 $N$ 行中,输出如何切割网格。每行应包含 $M$ 个字符,每个字符必须是 / 或 \。
如果无法满足条件切割网格,在第一行输出 NO。
样例
输入样例 1
4 4 2 ..// .\./ .\.. \./\ 0 3 3 1 3 1
输出样例 1
YES \\// /\\/ \\\/ \\/\
输入样例 2
2 3 2 .\. ... 1 2 1 1 2 2
输出样例 2
NO