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