CF1438D Powerful Ksenia

题目描述

Ksenia 有一个由 $n$ 个正整数组成的数组 $a$,即 $a_1, a_2, \ldots, a_n$。 她可以进行如下操作: - 选择三个不同的下标 $i$、$j$、$k$,然后 - 同时将 $a_i, a_j, a_k$ 都改为 $a_i \oplus a_j \oplus a_k$,其中 $\oplus$ 表示[按位异或运算](https://en.wikipedia.org/wiki/Bitwise_operation#XOR)。 她希望在最多 $n$ 次操作内使所有 $a_i$ 都相等,或者判断是否无法做到。她本不会寻求帮助,但请你帮帮她!

输入格式

第一行包含一个整数 $n$($3 \leq n \leq 10^5$)——数组 $a$ 的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 10^9$)——数组 $a$ 的元素。

输出格式

如果可以在最多 $n$ 次操作内使所有元素相等,第一行输出 YES,否则输出 NO。 如果可以做到,第二行输出一个整数 $m$($0 \leq m \leq n$),表示你进行了多少次操作。 接下来的 $m$ 行,每行输出三个不同的整数 $i, j, k$,表示一次操作。 如果有多种操作方案,输出任意一种即可。注意你不需要使操作次数最少。

说明/提示

在第一个样例中,数组变为 $[4 \oplus 1 \oplus 7, 2, 4 \oplus 1 \oplus 7, 4 \oplus 1 \oplus 7, 2] = [2, 2, 2, 2, 2]$。 由 ChatGPT 4.1 翻译