Joshua 在 Minecraft 中建造了一个工厂,该工厂由一个网格组成,每个网格中都有一个所谓的漏斗(hopper)。每个漏斗中可以存储一个物品,并指向其上方、下方、左侧或右侧相邻的另一个漏斗。每秒钟一次,每个内部有物品的漏斗都会将该物品推送到它所指向的漏斗中。有时,这可能会导致一个漏斗中同时出现多个物品。显然,这是不可行的,因为在该秒内被推入该漏斗的所有物品都会被销毁。
Joshua 希望工厂能够稳定运行,不要发生太多碰撞。因此,他向你提供了一份关于物品初始放置位置以及工厂布局的方案,现在想知道每个物品是会发生碰撞,还是会在工厂中无休止地循环移动。对于所有发生碰撞的物品,他还想知道碰撞发生的位置,以便他修改设计。写一个程序来帮助他吧!
图 1:样例 1 中的工厂在启动前和 1 秒后的状态。请注意,有三个物品在中间的方格中发生了碰撞。
输入格式
第一行包含整数 $R, C$($2 \le R \cdot C \le 10^6$)和 $N$($1 \le N \le 10^5$),分别表示网格的行数、列数以及方案中的物品数量。
接下来的 $R$ 行描述了工厂的布局。其中每行包含一个长度为 $C$ 的字符串。网格中的每个字符表示该方格中的漏斗所指向的方向。字符将是 'v'(下)、'<'(左)、'^'(上)或 '>'(右)之一。保证每个漏斗都指向另一个漏斗。
接下来有 $N$ 行,每行包含两个整数 $P_r$($0 \leq P_r \leq R-1$)和 $P_c$($0 \leq P_c \leq C-1$),表示第 $i$ 个物品的起始行和列。初始时,没有任何漏斗包含两个或更多的物品。
输出格式
对于每个物品(按照输入中的相同顺序),如果该物品永远不会与任何其他物品发生碰撞,则输出一行 cycle;如果它在第 $r$ 行第 $c$ 列(从 $0$ 开始索引)的漏斗中与某些物品发生碰撞,则输出一行 $r$ $c$。
样例
输入样例 1
3 3 5 vvv >v< >>^ 0 1 1 0 1 2 2 0 2 2
输出样例 1
1 1 1 1 1 1 cycle cycle
输入样例 2
1 2 2 >< 0 0 0 1
输出样例 2
cycle cycle
输入样例 3
3 3 3 vvv v<< >^^ 0 0 0 2 2 2
输出样例 3
cycle 1 2 1 2
子任务
你的解法将在若干个测试点结合(子任务)上进行测试,每个子任务分值不同。每个子任务包含一组测试用例。要获得一个子任务的分数,你需要通过该子任务中的所有测试用例。
| 子任务 | 分值 | 数据范围 |
|---|---|---|
| $1$ | $10$ | $R \cdot C \le 1000, N \le 1000$ |
| $2$ | $35$ | $N \le 1000$ |
| $3$ | $15$ | 如果一个漏斗是循环的一部分,则最多只有一个其他漏斗指向它。 |
| $4$ | $25$ | 没有漏斗指向上方。 |
| $5$ | $15$ | 无附加限制。 |