CF1329D Dreamoon Likes Strings

题目描述

Dreamoon 喜欢字符串。这天,他设计了一个关于字符串的游戏: 我们称一个字符串 $s_1, s_2, \ldots, s_n$ 是美丽的,当且仅当对于任意 $1 \le i \lt n$,$s_i \neq s_{i + 1}$。 初始时,Dreamoon 有一个字符串 $a$。在每一步内,Dreamoon 可以选择 $a$ 的一个美丽的子串,然后移除它,再将剩余的字符按照原来的顺序连接起来。 Dreamoon 希望用尽可能少的步数使得 $a$ 变成空串。请帮帮他,并给出任意一种使得步数最少的操作方案序列。

输入格式

第一行输入一个整数 $t ~ (1 \le t \le 200\ 000)$,表示测试数据组数。 对于每组测试数据,输入一行一个非空的字符串 $a$。$a$ 中仅包含小写字母。 每组测试数据的字符串长度之和不超过 $200\ 000$。

输出格式

对于每组测试数据,第一行输出一个整数 $m$,表示使得 $a$ 变成空串的最少步数。 接下来的 $m$ 行,每行输出两个整数 $l_i, r_i ~ (1 \le l_i \le r_i \le \lvert a \rvert)$,表示在第 $i$ 步中,移除了当前字符串中下标在 $l_i$ 到 $r_i$ 的这段子串(下标从 $1$ 开始)。 注意在删除一个子串后,剩余位置的下标可能发生改变。输出的 $r_i$ 不能超过当前字符串 $a$ 的长度。 如果有多个合法的方案,你可以输出任意一种。