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

Задача . D. Сумма функций XOR


Дан массив \(a\) длины \(n\), состоящий из неотрицательных целых чисел.

Необходимо вычислить значение \(\sum_{l=1}^{n} \sum_{r=l}^{n} f(l, r) \cdot (r - l + 1)\), где \(f(l, r)\) равно \(a_l \oplus a_{l+1} \oplus \dots \oplus a_{r-1} \oplus a_r\) (символ \(\oplus\) обозначает побитовое исключающее ИЛИ).

Так как ответ может быть очень большим, выведите его по модулю \(998244353\).

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

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

Вторая строка содержит \(n\) целых чисел \(a_1, a_2, \dots, a_n\) (\(0 \le a_i \le 10^9)\).

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

Выведите одно целое число — значение \(\sum_{l=1}^{n} \sum_{r=l}^{n} f(l, r) \cdot (r - l + 1)\), взятое по модулю \(998244353\).

Примечание

В первом примере ответ равен \(f(1, 1) + 2 \cdot f(1, 2) + 3 \cdot f(1, 3) + f(2, 2) + 2 \cdot f(2, 3) + f(3, 3) = \) \(= 1 + 2 \cdot 2 + 3 \cdot 0 + 3 + 2 \cdot 1 + 2 = 12\).


Примеры
Входные данныеВыходные данные
1 3
1 3 2
12
2 4
39 68 31 80
1337
3 7
313539461 779847196 221612534 488613315 633203958 394620685 761188160
257421502

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

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