Hipersum

Time limit: 2s Memory limit: 256MB Input: hipersum.in Output: hipersum.out

Kaguya este interesată de 4 operaţii:

  1. Şi-ul pe biţi, notat a & ba\ \&\ b, care coincide cu operatorul &\& din C++. Ca exemplu, 12 & 10=812\ \&\ 10 = 8.
  2. Sau-ul pe biţi, notat a  ba\ |\ b, care coincide cu operatorul | din C++. Ca exemplu, 12  10=1412\ |\ 10 = 14.
  3. Maximul, notat cu max(a,b)max(a, b). Ca exemplu, max(2,3)=3max(2, 3) = 3.
  4. Minimul, notat cu min(a,b)min(a, b). Ca exemplu, min(2,3)=2min(2, 3) = 2.

Cumva a ajuns să defineasca hiper-valoarea şirului a1,,aka_1, \dots, a_k, notat cu h(a1,,ak)h(a_1, \dots, a_k), prin expresia h(a1,,ak)=min(a1,,ak)max(a1,,ak)(a1 &  & ak)(a1    ak)h(a_1, \dots, a_k) = min(a_1, \dots, a_k) \cdot max(a_1, \dots, a_k) \cdot (a_1\ \&\ \dots\ \&\ a_k) \cdot (a_1\ |\ \dots\ |\ a_k).

Cerință

Miyuki o adoră pe Kaguya, deci vrea să îi facă un cadou frumos. Astfel, el îi cumpară o secvenţă v1,,vNv_1, \dots, v_N. Dar Kaguya este o fiinţa aparte, deci când primeşte acest şir, tot ce vrea e să cunoască suma hiper-valorilor tuturor subsecvenţelor lui vv, modulo 109+7{10}^{9} + 7. Mai exact vrea să afle i=1Nj=iNh(vi,,vj)\sum_{i=1}^{N} \sum_{j=i}^{N} h(v_i, \dots, v_j), modulo 109+7{10}^{9}+7.

Il puteţi ajuta pe Miyuki să afle această valoare pentru Kaguya?

Date de intrare

Fişierul de intrare hipersum.in conţine pe prima linie numărul NN. Pe a doua linie se găsesc NN numere naturale separate prin spaţiu care reprezintă elementele şirului VV.

Date de ieșire

În fişierul de ieşire hipersum.out se va afla un singur număr care reprezintă valoarea cerută.

Restricții și precizări

# Punctaj Restricții
1 20 1N1 000,1vi2201 \leq N \leq 1\ 000, 1 \leq v_i \leq {2}^{20}
2 20 1N50 000,1vi2201 \leq N \leq 50\ 000, 1 \leq v_i \leq {2}^{20}, valorile din șir sunt generate aleatoriu
3 20 1N100 000,1vi2301 \leq N \leq 100\ 000, 1 \leq v_i \leq {2}^{30}, valorile din șir sunt generate aleatoriu
4 20 1N50 000,1vi2201 \leq N \leq 50\ 000, 1 \leq v_i \leq {2}^{20}
5 20 1N100 000,1vi2301 \leq N \leq 100\ 000, 1 \leq v_i \leq {2}^{30}

Exemplu

hipersum.in

4
1 2 3 4

hipersum.out

390

Log in or sign up to be able to send submissions!