#AT0183. 波特

波特

题目描述

新一代机器人『波特』诞生了。现在,小 w 作为波特的开发者,正在对波特进行测试。波特被放在了一个无限大的平面中,初始时位于原点 (0,0)(0,0)

小 w 会给波特发送一个只含字符 UDRL 的字符串。字符串的每一个字母都是一次移动指令,四个字母的含义如下:

  • U:机器人向上移动一格,假设机器人当前坐标为 (x,y)(x, y),则移动到 (x,y+1)(x, y + 1)
  • D:机器人向下移动一格,假设机器人当前坐标为 (x,y)(x, y),则移动到 (x,y1)(x, y -1)
  • R:机器人向右移动一格,假设机器人当前坐标为 (x,y)(x, y),则移动到 (x+1,y)(x+1, y)
  • L:机器人向左移动一格,假设机器人当前坐标为 (x,y)(x, y),则移动到 (x1,y)(x - 1, y)

平面上有一些障碍物,障碍物均位于整点坐标上。如果机器人的下一个移动会移动到障碍物上,那么它将忽略这个移动指令,并尝试执行接下来的移动指令。

当指令执行结束后,机器人将会停止运动。

遗憾的是,因为权限不足,小 w 并不知道平面上有哪些位置有障碍物。因此,他想向你询问,对于障碍物所有可能的分布,机器人一共可能在哪些位置停下。

提示:机器人刚开始在坐标原点 (0,0)(0,0),这个原点不会有障碍物。

输入格式

输入的第一行是一个整数,表示字符串的长度 nn

第二行有一个长度为 nn 的字符串 ss,表示给出的指令串。

输出格式

输出的第一行是一个整数 kk,表示机器人可能停下的位置。

接下来 kk 行,每行两个整数 x,yx, y,用空格隔开,表示一个机器人可能停下的坐标。

注意,你应该按 xx 从小到大的顺序输出这些坐标。当两个坐标的 xx 相同时,先输出 yy 较小的坐标。

样例

2
UR
4
0 0
0 1
1 0
1 1

提示

【样例解释】

如果没有障碍物,机器人会执行 UR 指令,来到 (1,1)(1,1)

如果 (0,1)(0,1) 有障碍物,那么机器人会跳过 U 指令,执行 R 指令,来到 (1,0)(1,0)

如果 (1,1)(1,1) 有障碍物,那么机器人会跳过 R 指令,停留在 (0,1)(0,1)

如果 (0,1),(1,0)(0,1),(1,0) 都有障碍物,那么机器人会跳过 UR 两个指令,停留在 (0,0)(0,0)

【数据范围】

对于全部的测试点,保证 1n201 \leq n \leq 20ss 中仅含字母 UDRL

测试点 n=n= 特殊性质
131\sim3 33
44 1010 ss 中仅含字符 R
55 ss 中仅含字符 L 和 R
66 ss 中仅含字符 U 和 D
7,87,8
9,109,10 2020