Se dă un arbore cu noduri, numerotate de la la , în care fiecare nod are asociată o culoare. Fiecare culoare este reprezentată de un număr din mulțimea . Numim componentă o mulțime de noduri care formează o regiune conexă (subgraf conex nevid al arborelui) în arbore și pentru care oricare două noduri din mulțime au aceeași culoare. Această mulțime nu trebuie să fie neapărat maximală.
Cerință
Se cere numărul de moduri distincte de a împărți toate nodurile arborelui în cel mult componente disjuncte. De vreme ce acest număr poate să fie foarte mare, se cere restul său la împărțirea cu .
Două moduri, și se consideră distincte dacă există două noduri și () care fac parte din aceeași componentă în și nu fac parte din aceeași componentă în .
Date de intrare
Prima linie va conține numerele și . A doua linie va conține numere naturale nenule mai mici sau egale decât . Al -lea număr reprezintă culoarea celui de-al -lea nod.
Următoarele linii conțin fiecare câte o pereche de noduri , semnificând că în arbore există muchie între nodurile și .
Date de ieșire
Se va afișa un singur număr, reprezentând numărul de moduri în care se poate împărți arborele în cel mult componente, modulo .
Restricții și precizări
- ;
- ;
- Pentru puncte, , ;
- Pentru alte puncte, ;
- Pentru alte puncte, ;
- Pentru alte de puncte, ;
- Pentru alte puncte, ;
- Pentru restul de puncte, nu există restricții suplimentare.
Exemplu
stdin
5 3
1 1 1 1 2
2 4
1 2
5 4
3 4
stdout
4
Explicație
Putem împărți arborele în cel mult componente în moduri. Cele patru moduri sunt:
- și ;
- , și ;
- , și ;
- , și .