AT_arc199_b [ARC199B] Adjacent Replace

题目描述

给定一个长度为 $N$ 的非负整数序列 $A=(A_1,A_2,\ldots,A_N)$ 和一个非负整数 $K$。 请判断是否可以通过不超过 $10^4$ 次以下操作使得 $A_1=K$。 - 选择一个整数 $i\ (1\leq i\leq N-1)$,令 $x=A_i\oplus A_{i+1}$,然后将 $A_i$ 和 $A_{i+1}$ 都替换为 $x$。 这里,$\oplus$ 表示按位异或(XOR)运算。 如果可能,请输出一种满足条件的操作步骤。 有 $T$ 组测试数据,请分别作答。 按位异或(XOR)运算的定义如下:对于非负整数 $A,B$,$A\oplus B$ 的二进制表示中,第 $2^k$ 位($k\geq 0$)的数为 $A,B$ 的二进制表示中第 $2^k$ 位的数中恰有一个为 $1$ 时为 $1$,否则为 $0$。 例如,$3\oplus 5=6$(二进制表示为:$011\oplus 101=110$)。

输入格式

输入按以下格式从标准输入读入。 > $T$ > $\mathrm{case}_1$ > $\mathrm{case}_2$ > $\vdots$ > $\mathrm{case}_T$ 每组测试数据格式如下: > $N\ K\ A_1\ A_2\ \ldots\ A_N$

输出格式

请按顺序输出每组测试数据的答案。 如果无法通过不超过 $10^4$ 次操作使 $A_1=K$,输出 `No`。 如果可以,请输出操作步骤,格式如下: > Yes $M$ $i_1$ $i_2$ $\ldots$ $i_M$ 其中,$M$ 表示操作次数,$i_j\ (1\leq j\leq M)$ 表示第 $j$ 次操作选择的整数 $i$。要求 $0\leq M\leq 10^4,\ 1\leq i_j\leq N-1$。 如果存在多种满足条件的操作方案,输出任意一种均可。

说明/提示

### 数据范围 - $1\leq T\leq 50$ - $3\leq N\leq 60$ - $0\leq A_i,K