Enunț
Chertes are un vector cu numere naturale. Acest vector este foarte valoros pentru personajul nostru, așa că el își dorește să salveze informații despre vector astfel încât să-l poată reconstrui, în cazul în care îl pierde. O informație reprezintă o pereche de numere naturale , care are următoarea semnificație: se salvează suma elementelor din secvența . Formal, se salvează suma elementelor .
Spre exemplu, dacă avem vectorul , o informație validă ar putea fi (se salvează suma elementelor , și , care este ). În schimb, informația nu este validă deoarece .
Cerință
Deoarece Chertes este un băiat leneș, dar isteț, vă pune următoarea întrebare: în câte moduri putem salva un număr minim de informații, astfel încât să putem reconstrui vectorul? Mai grav! Acesta restrictioneaza salvarea unor informații. Mai exact se dau perechi ce reprezintă informațiile pe care nu le poți salva, cu alte cuvinte nu poți salva suma elementelor din secvență . Și mai grav!! Numărul de moduri este foarte mare asfel se cere restul împărțirii lui la .
Două moduri sunt diferite dacă unul dintre ele conține cel puțin o informație diferită față de cealălalt.
Date de intrare
Fișierul de intrare lostarray.in
conține pe prima linie un număr natural reprezentând numărul de elemente ale vectorului. Pe a doua linie se afla un număr natural reprezentând numărul de restricții. Pe următoarele linii se vor afla perechi de tipul reprezentând faptul că nu poți salva informația .
Date de ieșire
Fișireul de ieșire lostarray.out
conține pe prima linie numărul reprezentând numarul de moduri modulo .
Restricții și precizări
- Pentru teste în valoare de avem
Exemplu
lostarray.in
2
0
lostarray.out
3
Explicații
Sunt 3 moduri de a salva un număr minim de informații astfel incât putem reconstrui vectorul: , și .