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

Задача . G. Сумма Фибоначчи


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

Набор из 5 чисел (a, b, c, d, e) назовём корректным если:

  • 1 ≤ a, b, c, d, e ≤ n
  • (sa | sb) & sc & (sd ^ se) = 2i для некоторого целого i.
  • sa & sb = 0

Здесь '|' обозначает побитовое ИЛИ, '&' обозначает побитовое И, '^' обозначает побитовое исключающее ИЛИ.

Найдите сумму f(sa|sb) * f(sc) * f(sd^se) по всем корректным наборам (a, b, c, d, e), где f(i) обозначает i-е число Фибоначчи (f(0) = 0, f(1) = 1, f(i) = f(i - 1) + f(i - 2)).

Так как ответ может быть очень большим выведите его остаток от деления на 109 + 7.

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

В первой строке содержится целое число n (1 ≤ n ≤ 106).

Во второй строке содержатся n целых чисел si (0 ≤ si < 217).

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

Выведите требуемую сумму по модулю 109 + 7.


Примеры
Входные данныеВыходные данные
1 2
1 2
32
2 3
7 4 1
3520
3 10
1 3 0 7 3 7 6 5 7 5
1235424
4 10
50 9 11 44 39 40 5 39 23 7
113860062

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

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