U205168 翻转
题目背景
A和B在玩游戏
题目描述
他们把一张白纸的一面涂黑,然后剪成了一个3x3的网格,每一个格子都有两面,分别是黑色和白色,其中一面朝上,一面朝下。按从左到右、从上到下的顺序编号为:1~9
| 1 | 2 | 3 |
| :----------: | :----------: | :----------: |
| 4 | 5 | 6 |
| 7 |8 | 9 |
A和B约定好:A每次操作可以选择一个格子,使得该格子和与其上下左右相邻的格子同时翻转到另一面。B每次操作只能将一个格子翻转。刚开始的时候,所有格子都是白色朝上,然后B经过了若干次操作。接下来,B将不再操作,当所有格子均为白色朝上,游戏结束。现给出B的操作情况,要求求出A最少需要几次操作才能使得所有格子翻转为白色朝上,并把方法输出出来。(如果存在多个最少操作解法,输出其中字典序最小的,操作次数不得大于1000)
本题有多组数据。
输入格式
第一行一个正整数T,表示输入的组数。
接下来T行,每行共有n+1个数。每行第一个正整数即为n,表示B的操作次数。接下来是B每次操作的格子的编号,共n个,保证编号为1~9。每行数据之间用空格隔开。
输出格式
对于每组数据,先输出一个整数s,表示最少需要几次操作,然后接下来的s行,每行一个1~9之间的整数,表示操作的顺序。(如果存在多个最少操作解法,输出其中字典序最小的,操作次数不得大于1000)
说明/提示
**样例解释:**
样例1:
B行动完,格子是:
| 白 | 黑 | 白|
| -----------: | -----------: | -----------: |
| 黑 | 黑 | 白 |
| 白| 白 | 白 |
**数据范围**
T≤10000
n≤9