NWERC 2024 的注册区域。Maarten Sijm 摄
参加 NWERC 的两支队伍策划了一个狡猾的计划:他们想捉弄一下组织者,给他们制造点困惑,但又要足够微妙,不至于被抓住。
计划如下:在竞赛注册期间(他们领取 T 恤和纪念品的地方),他们会先等待组织者弯腰去拿 T 恤。然后,他们会迅速抬起 $k$ 件家具中的一件并移动它。由于时间有限且需要保持安静,每支队伍只能移动一件家具。
为了确保不被发现,在注册结束时,每件家具都必须回到其原始位置。通过之前的访问,队伍提前知道了房间的尺寸和其中的家具数量,但他们不知道当前的家具摆放方式。为了简单起见,两支队伍希望使用相同的策略。这意味着当他们遇到相同的布局时,两支队伍会做出相同的移动。在决定了共同的策略并出发前往赛场后,他们将无法进行交流。因此,他们计划制定一个策略,以确保无论家具如何摆放,后到达的队伍都会撤销先到达的队伍所做的任何操作。对于某些房间大小和房间内家具数量的组合,这是不可能实现的,因此进行这种恶作剧将是冒险的(risky)。
至少他们确信自己是唯一进行这种恶作剧的人,因此在两支队伍到达之间不会有任何家具被移动。帮他们为这个恶作剧找到一个策略吧!
输入格式
输入包含:
- 第一行包含一个整数 $t$ ($1 \le t \le 10\,000$),表示测试用例的数量。
对于每个测试用例,输入包含:
- 一行包含三个整数 $h$、$w$ 和 $k$ ($1 \le h, w \le 8$,$1 \le k < h \cdot w$),分别表示注册室的高度、宽度以及房间内的家具数量。
- $h$ 行,每行包含 $w$ 个字符,每个字符为
.或#,表示房间的状态。.表示空区域,#表示一件可移动的家具。保证房间内恰好包含 $k$ 件家具。
保证至少有一件家具和一些空区域。
这是一个多阶段(multi-pass)问题。您的程序将被调用多次,可能多于两次。您的程序在每次调用中以及跨多次调用时都必须表现出一致的行为。
为了测试目的,后续阶段的调用次数和输入将取决于您提交的程序的输出。
我们提供了一个测试工具来帮助您开发解决方案。
输出格式
对于每个测试用例,如果两支队伍无法提前制定出一种有效的策略(即无论这 $k$ 件家具最终如何摆放都能成功),则输出 risky。否则,指定如何移动一件家具:首先输出要移动的家具的位置,然后输出它应该被移动到的位置。两个位置都必须先指定行号 $r$($1 \le r \le h$,从上往下数),然后指定列号 $c$($1 \le c \le w$,从左往右数)。
样例
输入样例 1 (阶段 1)
3 1 4 2 .#.# 4 4 8 ..#. ###. ..## .#.# 1 3 1 .#.
输出样例 1 (阶段 1)
1 4 1 1 4 4 4 1 risky
输入样例 1 (阶段 2)
2 1 4 2 ##.. 4 4 8 ..#. ###. ..## ##..
输出样例 1 (阶段 2)
1 1 1 4 4 1 4 4