시간 제한메모리 제한제출정답맞힌 사람정답 비율
5 초 512 MB332100.000%

문제

Mirko je na nagradnoj igri osvojio zrakoplovnu kartu za put oko svijeta. Karta se sastoji od n kupona za let f1, f2, . . . , fn — k-ti kupon se može iskoristiti za jedan direktan let od grada polaska ak do grada dolaska bk. Za razliku od uobičajnih karata za put oko svijeta, grad dolaska na jednom kuponu ne mora nužno odgovarati gradu polaska na sljedećem kuponu. Svaki kupon za let Mirko može iskoristiti najviše jednom (dakle dozvoljeno je da ga uopće ne iskoristi). Medutim, kuponi se samo smiju koristiti originalnim redoslijedom — ako Mirko iskoristi kupone fi i fj gdje je i < j onda kupon fi mora iskoristiti prije nego što iskoristi kupon fj.

Itinerar je niz gradova redom posjećenih na putu oko svijeta, a u kojem se isti grad može pojavljivati i više od jednom. Prvi i posljednji grad u itineraru mora biti Zagreb gdje Mirko živi, a itinerar mora sadržavati barem još jedan drugi grad. Neka je m broj različitih takvih itinerara koje Mirko može ostvariti sa svojom kartom. Odredite koliko je m modulo 109 + 7.

입력

U prvom redu se nalazi prirodni broj n (1 ≤ n ≤ 300 000) — broj kupona za let. U k-om od sljedećih n redova se nalaze dva različita niza znakova ak i bk — kodovi grada polaska i grada dolaska na k-tom kuponu. Svaki kod grada je niz od točno tri velika slova engleske abecede. Kod grada Zagreba je ZAG.

출력

Ispišite traženi broj itinerara modulo 109 + 7.

예제 입력 1

4
ZAG SPU
SPU ZAG
ZAG SPU
SPU ZAG

예제 출력 1

2

예제 입력 2

8
PUY ZAG
ZAG OSI
OSI ZAG
ZAG DBV
OSI PUY
OSI DBV
DBV ZAG
PUY OSI

예제 출력 2

4

힌트

U prvom primjeru test podataka, mogući itinerari su ZAG-SPU-ZAGi ZAG-SPU-ZAG-SPU-ZAG.