三角形图

题目背景

请在 [这里](https://www.luogu.com.cn/paste/tre46v8i) 查看原题面。

题目描述

UNowen 有 $n$ 个[平面向量](https://baike.baidu.com/item/%E5%B9%B3%E9%9D%A2%E5%90%91%E9%87%8F/448934?fr=ge_ala) $\{\bm L_n\}$,其中: - $|\bm L_1|=|\bm L_2|=\ldots=|\bm L_n|=1$; - $\bm L_1+\bm L_2+\ldots+\bm L_n=\bm 0$; - 对于任意正整数 $1 \le i,j \le n$,总存在整数 $k$ 使得 $\langle\bm L_i,\bm L_j\rangle=\dfrac{k\pi}{3}$;([$\dfrac{k\pi}{3}=k \times 60^\circ$](https://baike.baidu.com/item/%E5%BC%A7%E5%BA%A6/1533188?fr=ge_ala)) - 除了整个向量序列以外(下同),向量序列中不存在和为 $\bm 0$ 的一段。 此处 $\langle\bm X,\bm Y\rangle$ 代指「将 $\bm X$ 旋转至与 $\bm Y$ 同向所旋转的角度」,逆时针为正角,顺时针为负角(例如,设 $\bm X=(\dfrac{\sqrt{2}}{2},\dfrac{\sqrt{2}}{2})$,$\bm Y=(1,0)$,则 $\langle\bm X,\bm Y\rangle=-\dfrac{\pi}{4}$)。 **也就是说,这 $n$ 个向量的长度(模)均为 $1$,并且首尾拼接可以得到一个封闭多边形。保证这个封闭多边形的各个内角均为 $\dfrac{\pi}{3}$ 的正整数倍,内部没有其他向量,并且不是空心的。** 为了表述方便,我们用一个长度为 $n$,字符集为 $\{\tt a,\tt b,\tt c,\tt d,\tt e,\#\}$ 的字符串 $S$ 来描述 $\{\bm L_n\}$。 具体地,对于 $S$ 的第 $i$ 个字符(特别地,$\bm L_0$ 等价于 $\bm L_n$,$\bm L_{n+1}$ 等价于 $\bm L_1$,下同): | 字符 | 含义 | | :----------: | :----------: | | $\tt a$ | $\langle\bm L_i,\bm L_{i+1}\rangle=\dfrac{2\pi}{3}$ | | $\tt b$ | $\langle\bm L_i,\bm L_{i+1}\rangle=\dfrac{\pi}{3}$ | | $\tt c$ | $\langle\bm L_i,\bm L_{i+1}\rangle=0$ | | $\tt d$ | $\langle\bm L_i,\bm L_{i+1}\rangle=-\dfrac{\pi}{3}$ | | $\tt e$ | $\langle\bm L_i,\bm L_{i+1}\rangle=-\dfrac{2\pi}{3}$ | | $\tt \#$ | $\vert\langle\bm L_i,\bm L_{i+1}\rangle\vert=\pi$ | ![](https://cdn.luogu.com.cn/upload/image_hosting/68g5vnfv.png) 此外,UNowen 按如下方式定义一个向量序列 $\{\bm L_1,\bm L_2,\ldots,\bm L_n\}$ 的「标准表示」: - 分别对于 $l=1,2,\ldots,n$,求出向量序列 $\{\bm L_l,\bm L_{l+1},\ldots,\bm L_n,\bm L_1,\bm L_2,\ldots,\bm L_{l-1}\}$ 对应的字符串: - 取 $n$ 个字符串中[字典序](https://baike.baidu.com/item/%E5%AD%97%E5%85%B8%E5%BA%8F/7786229?fr=ge_ala)最小的字符串作为向量序列 $\{\bm L_1,\bm L_2,\ldots,\bm L_n\}$ 的「标准表示」。 例如,上图中向量序列的「标准表示」是 $S=\texttt{abcedcdcddde}$,而不能是 $S=\texttt{dcdcdddeabce}$。 现在,UNowen 把向量序列 $\{\bm L_1,\bm L_2,\ldots,\bm L_n\}$ 对应的字符串 $S$(不一定是「标准表示」)给了你。他希望你可以按如下方式对这个向量序列进行一次修改: - 选定一个正整数 $1 \le k \le n$; - 构造两个平面向量 $\bm X,\bm Y$,使得: - $|\bm X|=1$; - $|\bm Y|=1$; - $\langle\bm L_k,\bm X\rangle=\dfrac{\pi}{3}$; - $\langle\bm L_k,\bm Y\rangle=-\dfrac{\pi}{3}$。 - 用 $\bm X,\bm Y$ 两项($\bm X$ 在前,$\bm Y$ 在后)替换 $\bm L_k$; - 若 $\bm L_{k-1}+\bm X=\bm 0$,删除 $\bm L_{k-1},\bm X$; - 若 $\bm L_{k+1}+\bm Y=\bm 0$,删除 $\bm L_{k+1},\bm Y$; - 若修改后的向量序列中存在和为 $\bm 0$ 的一段(除了整个向量序列以外),那么 UNowen 称这次修改是不合法的。例如,在下面的图片中,如果选择 $k=3$,那么修改就是不合法的。 - UNowen 会将修改后的向量序列的「标准表示」定义为该次修改的「修改结果」。 - 对于任意两个修改方案,如果修改后的向量序列首尾拼接得到的图形全等,那么 UNowen 会认为这两个修改方案是等价的。例如,在下面的图片中,$k=1$ 和 $k=2$ 的两个修改方案就是等价的。 - **也就是说,修改操作会对封闭多边形上的某个向量向外作等边三角形,使得修改后的图形仍为满足上述要求(各个内角均为 $\dfrac{\pi}{3}$ 的正整数倍,内部没有其他向量,并且不是空心的)的封闭多边形。对于任意两个修改方案,如果修改后的向量序列首尾拼接得到的图形全等,那么它们是等价的。** ![](https://cdn.luogu.com.cn/upload/image_hosting/dgd779r1.png) 请求出互不等价的合法的修改方案的个数,并按字典序从小到大输出每个修改方案的「修改结果」。

输入输出格式

输入格式


**本题有多组数据。** 第一行一个正整数 $T$,表示数据组数。 下面 $T$ 行,每行一个字符集为 $\{\tt a,\tt b,\tt c,\tt d,\tt e\}$ 的非空字符串 $S$。保证 $\tt \#$ 不会出现。

输出格式


对于每组数据,输出三行: 第一行一个正整数 $K$,表示,并按字典序从小到大输出每个修改方案。 第二行 $K$ 个字符集为 $\{\tt a,\tt b,\tt c,\tt d,\tt e\}$ 的非空字符串(用空格隔开),表示每个可能出现的「修改结果」。你需要按字典序从小到大的顺序输出它们。可以证明 $\tt \#$ 不会出现。 **第三行是空行。请特别注意这一点,因为它不符合传统题的一般数据格式。**

输入输出样例

输入样例 #1

2
eee
cedde

输出样例 #1

1
dede

3
beddde cdecde cecece

输入样例 #2

2
adeccecced
dddddd

输出样例 #2

5
acedccecced addebcecced adebebecced adecbedcced cceccecce

1
cddddce

输入样例 #3

7
eee
cedde
adeccecced
dddddd
ccdeccde
baedddcdde
abcedcdcddde

输出样例 #3

1
dede

3
beddde cdecde cecece

5
acedccecced addebcecced adebebecced adecbedcced cceccecce

1
cddddce

4
bcdeccdde bcedccece bdeccdebe cccedccde

8
abdecdcddde abececcddde abedcebddde abeddbecdde abeddccecde abeddcdcece abeddcddced addddcdde

10
abbeddcdcddde abcdeccdcddde abcecebdcddde abcedbeccddde abcedccebddde abcedcdbecdde abcedcdccecde abcedcdcdcece abcedcdcddced acedcdcdddd

说明

设 $|S|$ 为字符串 $S$ 的长度。 对于 $30\%$ 的数据,$T \le 5$,$|S| \le 9$。 对于 $50\%$ 的数据,保证所有的修改方案都是合法的。 对于 $100\%$ 的数据,$1 \le T \le 100$,$3 \le |S| \le 75$。