#CF2046F1. Yandex 楔形文字(简单版本)

Yandex 楔形文字(简单版本)

F1. Yandex 楔形文字(简单版本)
每个测试点时间限制:22
每个测试点内存限制:256256 兆字节

这是该问题的简单版本。两个版本的区别在于,在此版本中模板没有问号。只有解决了该问题的所有版本,你才能进行 hack。

长久以来,无人能破解苏美尔楔形文字。然而,它终于屈服于压力!今天,你有机会破解 Yandex 楔形文字。

Yandex 楔形文字由以下规则定义:

  • 空字符串是一个 Yandex 楔形文字。
  • 如果将一个 Yandex 楔形文字中分别插入字母 'Y''D''X' 各恰好一次,且插入后没有两个相邻的字母相同,则得到的新字符串也是一个 Yandex 楔形文字。
  • 无法通过上述规则得到的字符串就不是 Yandex 楔形文字。

你会得到一个模板。模板是一个由字符 'Y''D''X''?' 组成的字符串。

你需要判断是否存在一种将每个问号替换为 'Y''D''X' 的方式,使得得到的字符串是一个 Yandex 楔形文字。如果存在,请输出任意一个匹配的字符串,以及得到该楔形文字的一系列插入操作。

在此版本中,模板中没有问号。

输入
每个测试包含多个测试用例。第一行包含整数 tt1t51041 \le t \le 5 \cdot 10^4),表示测试用例的数量。
每个测试用例的描述如下:
一行包含一个长度为 nn 的模板(3n<21053 \le n < 2 \cdot 10^5nmod3=0n \bmod 3 = 0),仅由字符 'Y''D''X' 组成。
保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5

输出
对于每个测试用例,如果无法从给定模板得到一个楔形文字,则输出一行 NO
否则,第一行输出 YES,第二行输出任意一个可得到的楔形文字。之后,你需要输出一系列操作,这些操作对应得到该楔形文字的过程。
操作序列由 n3\frac{n}{3} 个三元组描述,每个三元组包含三个形如 c p 的配对,其中 cc 是字母 'Y''D''X' 之一,pp 是插入该字母的位置。插入位置是从字符串开头跳过的字符数。例如,将字符 'D' 插入字符串 "YDX" 的位置 p=3p=3 得到 "YDXD",插入位置 p=0p=0 得到 "DYDX"。注意,索引不能超过当前字符串的长度。
操作按从上到下、从左到右的顺序依次应用。每次插入一个三元组(即三个字母)后,字符串中不应有相邻相同的字母。

样例

输入

4
YDX
YDXDYX
YDX
DYYDXYXYX

输出

YES
YDX
X 0 D 0 Y 0 
YES
YDXDYX
X 0 Y 0 D 1
X 2 D 3 Y 4
YES
YDX
Y 0 D 1 X 2
NO

样例解释
第二个示例中,字符串变换过程为:"" \rightarrow "YDX" \rightarrow "YDXDYX"