Zăhărel vrea să plece într-o excursie împreuna cu dintre cei prieteni (numerotaţi de la la ) ai săi. Desigur, nu poate lua cu el orice grup de prieteni, deoarece prezenţa anumitor prieteni este condiţionată de prezenţa altora. Fiind un bun cunoscător al interacţiunilor sociale din cadrul grupului său de prieteni, Zăhărel
a făcut o listă cu toate cele dependenţe existente în grupul său: perechi de numere cu semnificaţia că prietenul cu numărul va veni în excursie, doar dacă prietenul cu numărul vine şi el. Vom numi o astfel de relaţie dependenţă directă.
Vom spune în continuare că doi prieteni , sunt în dependenţă indirectă dacă sunt în dependenţă directă sau dacă există un şir de numere , astfel încât depinde direct de , depinde direct de (pentru ) şi depinde direct de .
La o analiză atentă a celor relaţii Zăhărel a observat ca există o proprietate interesantă în cadrul grupului său: pentru oricare trei prieteni distincţi cu numere , , , dacă depinde indirect de şi depinde indirect de , atunci depinde indirect de , sau depinde indirect de , sau ambele.
Cerinţă
Să se scrie un program care determină în câte moduri poate alege Zăhărel dintre cei prieteni ai lui pentru a merge în excursie, ţinând cont de cele relaţii de dependenţă.
Date de intrare
Fişierul de intrare dep.in
va conţine pe prima linie numerele . Următoarele linii vor conţine perechi de numere reprezentând dependenţele directe.
Date de ieșire
Fişierul de ieşire dep.out
va conţine pe prima linie un singur număr reprezentând în câte moduri poate alege Zăhărel dintre cei prieteni. Rezultatul se va afişa modulo .
Restricții și precizări
- Pentru din teste
- Pentru din teste nu vor exista dependenţe indirecte ciclice ( depinde indirect de )
Exemplu
dep.in
5 8 3
1 2
2 1
1 3
2 3
4 5
5 4
4 3
5 3
dep.out
2
Explicație
Zăhărel poate merge excursie fie cu prietenii , fie cu prietenii .