#NC2503B. Bitwise Puzzle

Bitwise Puzzle

题目描述

Yuki 给了你三个非负整数 a,b a, b c c 。你可以执行以下操作,最多进行 k=64 k = 64 次:

  1. aab a \leftarrow a \oplus b ;
  2. bbc b \leftarrow b \oplus c ;
  3. aac a \leftarrow a \oplus c ;
  4. bba b \leftarrow b \oplus a .

请在不超过 k k 次操作的情况下使 a=b=c a = b = c 。可以证明,在题目的约束条件下,若存在合法方案,一定存在不超过 k=64 k = 64 次的合法方案。

输入格式

本题中测试点内有多组数据。第一行仅包含一个整数 t t (1t104 1 \leq t \leq 10^4 ),表示测试数据组数。每组测试数据的格式如下:

输入的第一行,也是唯一一行,包含三个整数 a,b a, b c c (0a,b,c<231 0 \leq a, b, c < 2^{31} )。

输出格式

对于每组数据:

  • 如果你认为无解,仅需输出一行一个整数 1-1
  • 否则,请输出两行。第一行包含一个整数 p p (0pk 0 \leq p \leq k ),描述你进行的操作次数;第二行包含 p p 个整数,每个整数在 [1,4][1, 4] 之间,依次表示你进行的操作对应的序号。
4
3 5 6
0 0 1
7 7 7
2 9 4
2
4 1
-1
0

2
1 2

解释 #1

对于第一组数据,初始 a=3,b=5,c=6 a = 3, b = 5, c = 6 ,进行第一次操作后 a=3,b=3,c=6 a = 3, b = 3, c = 6 ,进行第二次操作后 a=b=c=6 a = b = c = 6 。符合要求。

对于第二组数据,无论如何进行操作,都有 a=b=0a=b=0,无法满足 a=b=ca=b=c