警方调查显示,歹徒在城市地下部署了若干放射性石块,以污染地下水。虽然已经找到了放射性石块的确切位置,但由于放射性的性质,安全地移除这些石块是一项艰巨的任务。因此,市政府决定使用屏蔽挖掘机从地下回收石块。
城市呈方形网格状。市政部门提供了几种可用的挖掘机类型——Reepadlo、Qrtech、Bugger、Namakatschenko 和 Kopatsch。它们各自具有不同的规格和移动模式。挖掘机可以分别像国际象棋中的车(Rook)、后(Queen)、象(Bishop)、马(kNight)或王(King)一样移动(参见移动示意图)。由于兼容性问题,只能部署单一类型的挖掘机。
图 1:特定挖掘机移动模式示意图。
网格的每个方格中最多有一个放射性石块。挖掘开始时,每个放射性石块的位置上都有一台挖掘机,它会立即从地下回收该石块。接下来的操作步骤必须遵循严格的辐射处理安全协议。在每一步中,只能有一台挖掘机执行一次移动,且只有当移动将挖掘机带到另一台挖掘机所在的位置时,该移动才能执行。Reepadlo、Qrtech 和 Bugger 类型的挖掘机在跨越多个网格方格移动时可以跳过其他挖掘机,即它们不必在遇到的第一台挖掘机的位置结束移动。当挖掘机 $A$ 到达挖掘机 $B$ 的位置后,$B$ 会接管 $A$ 的负载,而 $A$ 将从操作中移除,以便进行辐射清理。
如果最终只剩下一台挖掘机,则操作成功完成。操作也可能无法成功完成。
你的任务是确定操作是否可以成功完成。如果可以,请同时打印出导致该解的挖掘机移动步骤。
输入格式
输入的第一行包含一个整数 $N$ ($1 \le N \le 100$),确定城市的大小,以及一个字符,确定要部署的挖掘机类型(“R” – Reepadlo,“Q” – Qrtech,“B” – Bugger,“N” – Namakatschenko,“K” – Kopatsch)。
接下来有 $N$ 行,描述城市中挖掘机的初始位置。每行包含 $N$ 个字符,每个字符要么是挖掘机类型,要么是表示空地的“.”。城市中至少部署有一台挖掘机。
输出格式
如果给定配置的操作可以成功完成,则在第一行打印“YES”,否则打印“NO”。如果操作可以成功完成,请按执行顺序打印描述挖掘机移动的行(如果有的话)。第 $i$ 行描述一个单步移动,包含四个空格分隔的整数 $X, Y, W, Z$ ($1 \le X, Y, W, Z \le N$),表示挖掘机在第 $i$ 步从位置 $(X, Y)$ 移动到位置 $(W, Z)$。位置 $(X, Y)$ 描述了第 $X$ 行(从上到下编号)和第 $Y$ 列(从左到右编号)的位置。
样例
样例输入 1
2 K K. KK
样例输出 1
YES 2 2 2 1 2 1 1 1
样例输入 2
3 B B.. B.. ..B
样例输出 2
NO