ND

Time limit: 1s Memory limit: 64MB Input: Output:

Cerință

Fie DD și MM două numere naturale. Fie N1,N2,,NDN_1, N_2, \dots, N_D numere naturale astfel încât 1iD,1NiM\forall 1 \leq i \leq D, 1 \leq N_i \leq M. Fie un grid DD dimensional. Fiecare punct (x1,x2,,xD)(x_1, x_2, \dots, x_D) pentru care 0xiNi,1iD0 \leq x_i \leq N_i, \forall 1 \leq i \leq D are asociată o valoare binară, inițial 00.

Într-o operație putem alege DD numere, a1,a2,,aDa_1, a_2, \dots, a_D astfel încât 1iD\forall 1 \leq i \leq D să avem 0aiNi0 \leq a_i \leq N_i. Valoarea tuturor punctelor (x1,x2,,xD)(x_1, x_2, \dots, x_D) care respectă 1iD,0xiai\forall 1 \leq i \leq D, 0 \leq x_i \leq a_i se inversează (din 00 în 11 și din 11 în 00).

Fie f:{0,1,2,,M}{0,1}f : \{ 0, 1, 2, \dots, M \} \rightarrow \{ 0, 1 \} o funcție oarecare. Se dorește ca în final configurația valorilor să respecte următoarea condiție:

Valoarea asociată unui punct (x1,x2,,xD)(x_1, x_2, \dots, x_D) să fie (i=1Df(xi))%2\left( \sum_{i=1}^D { f(x_i) } \right) \% 2. Mai exact dacă un număr impar de f(xi)f(x_i) sunt 11, atunci valoarea asociată punctului trebuie să fie 11. Altfel aceasta trebuie să fie 00.

Se cere numărul minim de operații necesare pentru a obține configurația dorită. Deoarece acest număr poate fi foarte mare se cere afișarea modulo 108+710^8+7.

Date de intrare

Pe prima linie se află DD și MM, numărul de dimensiuni și limita numerelor NiN_i. Pe a doua linie se află DD numere, N1,N2,,NDN_1, N_2, \dots, N_D, separate prin spații. Pe a treia linie se află șirul de valori pentru funcția ff (corespunzătoare indicilor 0M0 \dots M), neseparate prin spațiu.

Date de ieșire

Să se afișeze numărul minim de operații necesare pentru a obține configurația.

Restricții și precizări

  • 1D1051 \leq D \leq 10^5
  • 1M1061 \leq M \leq 10^6
  • 1NiM,1iD1 \leq N_i \leq M, \forall 1 \leq i \leq D

Exemplul 1

stdin

1 5
5
011010

stdout

4

Exemplul 2

stdin

3 6
4 6 1
0101010

stdout

12

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