#1972. 滑动

滑动

题目描述

Swipe 是一款新的手机游戏,最近大受欢迎。在 Swipe 游戏的每一个关卡中,您都会得到两个长度为 NN 的数列 AA 和 BB。Swipe 游戏的每个关卡的目标是把数组 AA 变成数组 BB。

现在有两种可以对 AA 进行的滑动操作。

  • 向右滑动:选择一个区间 [l,r][l, r],对任意 l≤i≤rl \le i \le r 令 Ai=AlA_i = A_l。
  • 向左滑动:选择一个区间 [l,r][l, r],对任意 l≤i≤rl \le i \le r 令 Ai=ArA_i = A_r。

例如,一开始 A=[0,1,2,3,4,5]A = [0, 1, 2, 3, 4, 5],如果我们对区间 [2,4][2, 4] 做向右滑动的操作,序列变为 [0,1,2,2,2,5][0, 1, 2, 2, 2, 5]。如果我们对区间 [3,5][3, 5] 做向左滑动的操作,序列变为 [0,1,2,5,5,5][0, 1, 2, 5, 5, 5]。注意序列从 0 开始编号。

不幸的是,游戏存在一些问题,可能会包含无法通过的关卡。请问是否可以将数组 AA 转换为数组 BB。如果可以,请给出任意一种将数组 AA 转换为数组 BB 的滑动操作方案。

输入格式

输入的第一行包含一个正整数 NN 表示两个数列的长度。

第二行包含 NN 个空格隔开的 AA 中的整数。

第三行包含 NN 个空格隔开的 BB 中的整数。

输出格式

如果存在一种操作方案可以把 AA 变为 BB,在第一行输出 YES,否则输出 NO。

如果在第一行输出了 YES,则下一行包含一个非负整数 KK(K≤NK \le N)表示滑动次数。

接下来 KK 行每行包含三个空格隔开的数 Dj,ljD_j, l_j 和 rjr_j。DjD_j 是 R 或者 L 表示第 jj 次操作是向右滑动还是向左滑动。

ljl_j 和 rjr_j 表示这次滑动操作的左端和右端,必须满足 0≤lj≤rj<N0 \le l_j \le r_j < N。

样例

样例输入 1

3
3 1 2
3 1 1

样例输出 1

YES
1
R 1 2

样例输入 2

4
1 2 4 3
1 4 2 3

样例输出 2

NO

样例输入 3

4
2 1 4 3
2 1 4 3

样例输出 3

YES
0

数据范围

对于所有数据,1≤N≤3×1051 \le N \le 3 \times 10^5,1≤Ai,Bi≤3×1051 \le A_i, B_i \le 3 \times 10^5。

本题共 20 个测试点,每个测试点 5 分,合计 100 分。

测试点编号 测试点数 数据范围
1 ~ 2 2 N=2N = 2,1≤Ai,Bi≤31 \le A_i, B_i \le 3
3 ~ 6 4 1≤N≤81 \le N \le 8,1≤Ai,Bi≤81 \le A_i, B_i \le 8
7 ~ 12 6 1≤N≤5001 \le N \le 500,1≤Ai,Bi≤30001 \le A_i, B_i \le 3000
13 ~ 20 8 1≤N≤3×1051 \le N \le 3 \times 10^5,1≤Ai,Bi≤3×1051 \le A_i, B_i \le 3 \times 10^5