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

Задача . J. Массив с нулевым XOR


Вам задан массив целых чисел \(a\) размера \(n\). Данный массив не убывающий, т.е. \(a_1 \le a_2 \le \dots \le a_n\).

Вам необходимо найти массивы целых чисел \(b\) размера \(2n - 1\), таких что:

  • \(b_{2i-1} = a_i\) (\(1 \le i \le n\));
  • массив \(b\) не убывающий;
  • \(b_1 \oplus b_2 \oplus \dots \oplus b_{2n-1} = 0\) (\(\oplus\) обозначает операцию побитового исключающего ИЛИ: https://ru.wikipedia.org/wiki/Исключающее_«или». В языке Kotlin — функция xor).

Посчитайте количество массивов, удовлетворяющих всем вышеописанным условиям, взятое по модулю \(998244353\).

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

В первой строке задано единственное целое число \(n\) (\(2 \le n \le 17\)) — размер массива \(a\).

Вторая строка содержит \(n\) целых чисел (\(0 \le a_i \le 2^{60} - 1; a_i \le a_{i+1}\)) — элементы массива \(a\).

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

Выведите одно целое число — количество массивов, удовлетворяющих всем вышеописанным условиям, взятое по модулю \(998244353\).


Примеры
Входные данныеВыходные данные
1 3
0 1 3
2
2 4
0 3 6 7
6
3 5
1 5 9 10 23
20
4 10
39 62 64 79 81 83 96 109 120 122
678132

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

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