Cerință
Miki a terminat de pregătit murăturile pentru iarnă și acum dorește să eticheteze cele borcane pe care le-a umplut. El are la dispoziție etichete, numerotate de la la .
Procesul de etichetare al borcanelor se va desfășura în următorul fel:
- Initial Miki alege un borcan cu indicele (), și îi aplică eticheta cu numărul ;
- Pentru fiecare etichetă următoare, de la la , Miki selectează un nou borcan, cu indicele (), astfel încât diferența dintre indicii borcanelor consecutive să fie exact . Borcanul selectat va primi eticheta cu numărul corespunzător;
- Dacă un borcan selectat are deja o etichetă, Miki va înlocui eticheta existentă cu cea nouă.
Prietenul său, Denis, i-a propus o etichetare finală a borcanelor - . Acum, Miki se întreabă în câte moduri distincte ar putea obține etichetarea propusă, respectând procesul de etichetare menționat mai sus. Ajutați-l pe Miki să calculeze acest număr modulo .
Date de intrare
Pe prima linie, se vor afla două numere întregi și - numărul de borcane, respectiv numărul de etichete.
Pe a doua linie se vor afla numere - etichetarea propusă de Denis.
Date de ieșire
Se va afișa o singură linie ce conține un singur număr întreg - numărul de modalități distincte prin care Miki poate obține etichetarea propusă de Denis modulo .
Restricții și precizări
- În cazul în care un borcan cu indicele rămâne neetichetat, eticheta acestuia va fi ;
- Un proces de etichetare este considerat diferit de alt proces dacă ordinea borcanelor etichetate este diferită;
- ;
- ;
- ;
- Dacă , și , atunci ;
- Se garantează că etichetarea propusă de Denis este validă.
Subtask-uri
# | Punctaj | Restricții |
---|---|---|
0 | 0 | Exemplul |
1 | 13 | |
2 | 21 | |
3 | 26 | și |
4 | 40 | Fără restricții suplimentare |
Exemplul 1
stdin
4 9
1 8 9 6
stdout
2
Explicație
Pentru primul exemplu există două procese de etichetare distincte:
- ;
- .
Exemplul 2
stdin
6 16
0 5 16 15 12 11
stdout
18