#295. 在东北指路

在东北指路

题目背景

在指路的时候,一些地区的人更习惯按绝对方位指路,比如:「往南走到第二个路口,再往东走到第一个路口就到了。」

然而由于东北某城市路网规划十分复杂,很多街道并不是正方位朝向的,因此如果你按照绝对方位给长期生活在东北的人指路的话,他很可能因为不习惯找方位而弄不清你所指的位置。

题目描述

在东北某城市,人们更习惯使用相对方位来指路,比如指引同样的位置,东北人会首先让你朝向南,并告诉你:「沿路捡直(直行)走到第二个路口,左拐,再捡直走到第一个路口就到了。」

为了应对这种差异,你准备写一个程序,将按绝对方位的指路方式转化为东北人习惯的指路方式。当然,如果直接使用东北某城市的地图的话就太复杂了,所以本题中你可以认为地图是一个无限大的网格形状。

输入格式

每个样例点包含多组测试用例。第一行输入一个整数 T(1T104)T (1\le T\le 10^4),表示测试用例组数。对于每组测试用例:

  • 第一行一个整数 n(1n10)n(1\le n\le 10),表示指路指令的个数。
  • 接下来 nn 行,每行按照绝对位置描述一个指令,包含一个字符 d(d{N,S,W,E})d (d\in \{\texttt{N,S,W,E}\}) 和一个整数 x(1x10)x(1\le x\le 10),表示「往 dd 方位走到第 xx 个路口」。其中 N\texttt{N} 表示向北,S\texttt{S} 表示向南,W\texttt{W} 表示向西,E\texttt{E} 表示向东。

保证相邻两个指令中 dd 不相同且不相反(北与南互相相反,西与东互相相反)。

输出格式

对于每组数据,第一行输出一个整数 m(1m20)m(1\le m\le 20) 和一个字符 f(f{N,S,W,E})f(f\in \{\texttt{N,S,W,E}\}),分别表示按东北人习惯的指路方式的指令条数和初始面向的方位,方位的含义同输入中描述。

接下来输出 mm 行,每行首先输出一个字符 g{Z,L,R}g\in \{\texttt{Z,L,R}\},其中 Z\texttt{Z} 表示直走,L\texttt{L} 表示左转,R\texttt{R} 表示右转。若输出的字符为 Z\texttt{Z},此外还需输出一个整数 y(1y100)y(1\le y\le 100) 表示直走到第 yy 个路口。第一个输出的指令必须以 Z\texttt{Z} 开头,输出中相邻两个指令的字符 gg 不能相同,并且 L\texttt{L} 指令和 R\texttt{R} 指令不能相邻。

请注意,本题开启Special Judge,你无需最小化 mm,如果有多种方案可以到达同一目的地,输出任意一个均可

本题行末不允许包含多余空格

样例

1
2
S 2
E 1
3 S
Z 2
L
Z 1

说明/提示

题源:2024 CCPC 哈尔滨 C题