#A904. 取石子游戏2

取石子游戏2

问题描述

取石子游戏是一种经典的博弈游戏,通常由两个人轮流进行。‌石子有很多堆,在游戏过程中,玩家可以选择在某一堆中取走任意颗石子。游戏的最终目标是把所有石子全部取完,最后取完石子的一方获胜(无法取石子的失败)。‌

光头强会与你玩 TT 轮游戏,每次有 nn 堆石子,每堆石子有 xi(1in)x_i(1≤i≤n) 颗。你需要告诉他你想先手还是后手。

0 表示你选择先手,1 表示你选择后手。

之后光头强会按照你选择的先后手与你玩游戏。

如果你选择先手,此时你应当立即输出两个数,表示你取的石子堆的编号以及你取几个石子,然后光头强也告诉你两个数,表示他的策略。如此反复。 反之亦然。

如果光头强无石子可取,他会认输,并向你输出 -1 -1。之后开启下一轮游戏。如果光头强获胜了,他会直接嘲讽你并结束游戏。

你的目标是在每一轮都击败光头强!

询问方式

第一行光头强会给出一个整数 TT,表示游戏的总轮次。

询问方式如前面所述。首先由光头强给出石子总堆数 nn,下面一行会有 nn 个数表示每堆石子的数量。

由你选择先手还是后手。之后按照先后顺序依次取石子。

系统输出

第一行是一个整数 T(1T103)T(1≤T≤10^3),表示测试数据的组数。每组测试数据,系统首先输出两个整数 n(1n102)n(1≤n≤10^2)x(1x104)x(1≤x≤10^4),表示该组测试数据的石子数和每次最多能取几个,然后你可以按规定进行交互。

依照你选定的个先后顺序,系统会在合适的时候给出他的选择。

数据保证单个测试点有 x105\sum x≤10^5

样例

3

1
10
-1 -1

2
6 6
1 4
2 2
-1 -1

3
2 2 3
3 1
2 2
-1 -1
0
1 10

1
2 4
1 2

0
1 1
1 1
3 2

样例说明

注意,上述空行是为了展示方便,实际系统输出并没有。后台采取忽略空格和空行的读取方式,你也不需要输出空行。

Case1:可以一次拿完。

  • 选择先手,一次拿完。

Case2:两堆一样,模仿即可。

  • 选择后手,会拿到最后一个。

Case3:有不止一种方案。

  • 第一把直接拿完最后一堆也行。

注意事项。

光头强没有耐心,所以即便你有很正确的策略,但是思考太久他也会嘲讽你。

如果使用带缓冲的输出,务必进行flush,否则可能导致后台交互器不能即时读取到数据导致超时。

为方便调试,如果你申请了不合法的数字或者输掉了游戏,系统会输出 -2 -2,因此如果你读取到 -2 -2,说明是已经失败了,你可以直接结束程序以获取错误信息,否则后续交互可能会因为无法进行导致RE,从而无法获取错误信息。