Олимпиадный тренинг

Задача . D. Влиятельная Ксения


У Ксении есть массив \(a\), состоящий из \(n\) положительных целых чисел \(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\) обозначает операцию побитового исключающего ИЛИ.

Ксения хочет сделать все \(a_i\) равными за не более чем \(n\) операций или определить, что это невозможно. Она не стала бы просить вас о помощи, но, пожалуйста, помогите ей!

Входные данные

Первая строка содержит одно целое число \(n\) (\(3 \leq n \leq 10^5\)) — длину \(a\).

Вторая строка содержит \(n\) целых чисел \(a_1, a_2, \ldots, a_n\) (\(1 \leq a_i \leq 10^9\)) — элементы \(a\).

Выходные данные

В первой строке выведите YES или NO в зависимости от того, можно ли сделать все элементы равными за не более чем \(n\) операций.

Если это возможно, выведите целое число \(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]\).


Примеры
Входные данныеВыходные данные
1 5
4 2 1 7 2
YES
1
1 3 4
2 4
10 4 49 22
NO

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя