Počet bodov:
Popis:  12b
Program:  8b

Paulinka1 mala jedného dňa robiť úlohu z databáz. Ako písala riešenie, uvedomila si, že jedáleň práve zatvorila. Bola nedeľa, takže aj všetky obchody boli zatvorené. Žiaľ, musela pokračovať v písaní o hlade a tak miesto databáz Paulinka premýšľala o koláčoch. A tak to aj skončilo. Jej domáca úloha obsahovala databázy všelijakých koláčov.

Keď prišla z ďalekého západu na prázdniny domov, rozhodla sa, že taká databáza koláčov je výborný nápad. Išla ho teda zrealizovať. Po chvíli plánovania prišla na to, že databáza predsalen nie je najlepší spôsob pre uloženie koláčov a namiesto databázy upečie maticu koláčov.

Matica mala \(r\) riadkov a \(s\) stĺpcov a Paulinka upiekla \(n + m\) koláčov. Najskôr prvých \(n\) položila tak, že \(i\)-ty bol v \((i \mod r)\)-tom riadku a \((i \mod s)\)-tom stĺpci.

Následne ešte na niektoré políčka matice položila zvyšných \(m\) koláčov tak, ako sa jej to páčilo. Paulinka mohla položiť aj viacero koláčov do jedného políčka.

Ako finalizovala svoju maticu, rozhodla sa, že niektoré koláče ozdobí maslovým krémom. Samozrejme, nie len tak ledabolo! Každý riadok a každý stĺpec musí obsahovať nepárny počet ozdobených koláčov. Samozrejme, žiadne rearanžovanie koláčov!

Paulinka s krémom stojí nad maticou a premýšľa, ako to urobiť. Ide to vôbec? Koľkými spôsobmi?

Úloha

Koľkými spôsobmi ide ozdobiť koláče v horeuvedenom rozložení tak, aby v každom riadku a stĺpci matice bol nepárny počet ozdobených koláčov?

Dva spôsoby sú rôzne, ak je nejaký koláč ozdobený v jednom a neozdobený v druhom. V jednom políčku môže byť aj viac koláčov.

Formát vstupu

Na prvom riadku dostanete rozmery mriežky \(r, s \leq 10^{9}\) a čísla \(r + s \leq n \leq 10^{9}\) a \(m \leq 10^{5}\) oddelené medzerou.

Na ďalšom riadku je \(m\) čísel, \(r_0\)\(r_{r-1}\), kde \(r_i\) je riadok \(n + i\)-teho koláča.

Na treťom riadku je \(m\) čísel, \(s_0\)\(s_{s-1}\), kde \(s_i\) je stĺpec \(n + i\)-teho koláča.

Riadky a stĺpce číslujeme od nuly.

V jednotlivých sadách vstupov platia pre \(r\), \(s\), \(n\) a \(m\) nasledovné obmedzenia:

1 2 3 4 5 6 7 8
\(r, s \leq 10\) \(r \leq 10\) \(r, s \leq 10^6\) \(r, s \leq 10^6\) \(r, s \leq 10^6\) \(\gcd(r, s)\leq 10^6\) \(r, s \leq 10^9\) \(r, s \leq 10^9\)
\(n + m \leq 20\) \(s < 10^3\) \(n \leq 5(r + s)\) \(n = r\cdot s\) \(n \leq 5(r + s)\) \(n \leq 10^9\) \(n \leq 10^9\) \(n \leq 10^9\)
\(n \leq 2^{16}\) \(m \leq 10^5\) \(m = 0\) \(m \leq 10^5\) \(m \leq 10^5\) \(m \leq 10^5\) \(m \leq 10^5\)
\(m \leq 10^5\)

Navyše, v tretej a siedmej sade stačí vypísať, či existuje aspoň jedno riešenie. Presnejšie, ak je odpoveď nula, tak program má vypísať nulu, a inak môže vypísať akékoľvek kladné číslo.

Formát výstupu

Vypíšte jedno číslo – počet rôznych spôsobov ozdobení koláčov. Keďže toto číslo môže byť veľmi veľké, vypíšte ho modulo \(1\,000\,000\,009\).

Príklad

Input:

2 4 6 2
1 1
3 0

Output:

8

Jeden možný spôsob ozdobenia koláčov:

Input:

6 4 50 5
0 1 2 3 4
3 3 3 3 3

Output:

743544352

Tu je možností veľa.

Input:

2 4 6 2
1 0
3 2

Output:

0

  1. s krátkym i

Odovzdávanie

Na odovzdávanie sa musíš prihlásiť

Otázky a diskusia

Po skončení kola budete mať príležitosť na diskutovanie o riešeniach v diskusii pod vzorovým riešením.