定义一个“箭头字符串”为满足以下条件的字符串:
- 字符串长度至少为 5。
- 字符串以
>开头,以>>>结尾。 - 字符串其余部分仅由
-组成。
例如,>-->>> 和 >--->>> 是合法的箭头字符串,而 >->> 和 >->->>> 则不是。
Sauden 给你一个长度为 $n$ 的字符串 $s$,由 > 和 - 组成。你需要通过对一个长度同样为 $n$、初始全为 * 的字符串进行一系列涂色操作来构造出 $s$。在一次涂色操作中,你可以选择一个长度至少为 5 的子串,并将其转化为一个箭头字符串。你执行的操作总数不能超过 $n$。
如果无法在不超过 $n$ 次操作内得到字符串 $s$,输出 No。否则,输出 Yes 并提供涂色操作的详细信息。如果存在多种方案,输出任意一种即可。
输入格式
第一行包含一个整数 $T$ ($1 \le T \le 10^4$),表示测试用例的数量。
每个测试用例包含一行长度为 $n$ ($5 \le n \le 10^5$) 的字符串 $s$,仅由 > 和 - 组成。
保证所有测试用例的 $n$ 之和不超过 $5 \cdot 10^5$。
输出格式
对于每个测试用例,如果无法通过不超过 $n$ 次涂色操作得到给定字符串,输出一行 No。否则,输出 Yes 以及一个正整数 $m$ ($1 \le m \le n$),表示执行的涂色操作次数。随后输出 $m$ 行,每行包含两个整数 $p$ ($1 \le p \le n - 4$) 和 $l$ ($5 \le l \le n + 1 - p$),分别表示所选子串的起始位置和长度。
样例
样例输入 1
4 >>->>> >>>-> >>>>> >->>>>>>
样例输出 1
Yes 2 1 5 2 5 No No Yes 2 2 7 1 5
说明
对于样例中的第四个测试用例,涂色过程如下:
******** $\to$ *>--->>> $\to$ >->>>>>>