Un trotuar de lungime şi lăţime trebuie pavat cu dale. Dalele sunt de diferite tipuri, dar din fiecare tip avem o cantitate nelimitată. Lungimea dalelor în cazul fiecărui tip este aceeaşi , iar lăţimea poate să fie o valoare dintre . Trotuarul are pe suprafaţa lui zone ocupate, care nu vor fi pavate. Aceste zone au de fiecare dată o formă pătratică de latură (reprezentând locul unor stâlpi, cutii poştale, canale, etc.). Se cunosc coordonatele acestor puncte . ( reprezintă coloana, reprezintă linia punctului).
În exemplele de mai jos vedem trei metode distincte de acoperire a unui trotuar de dimensiuni folosind două tipuri de dale: , respectiv , având trei zone ocupate pe trotuar, şi anume: .
Cerință
Cunoscând dimensiunea trotuarului, tipurile de dale disponibile, şi coordonatele zonelor ocupate, să se determine numărul de pavări distincte posibile modulo .
Date de intrare
Fişierul trotuar.in
conţine pe prima linie numere naturale , , , şi separate prin câte un spaţiu, reprezentând lungimea şi lăţimea trotuarului, respectiv numărul tipurilor de dale şi numărul zonelor ocupate. Pe linia următoare avem cele lăţimi ale tipurilor de dale: separate prin câte un spaţiu.
Următoarele linii conţin câte două numere naturale separate prin spaţiu, reprezentând câte o coordonată , pentru fiecare ale zonelor ocupate.
Date de ieșire
Fişierul trotuar.out
va conţine o singură linie, numărul pavărilor distincte modulo 666013.
Restricții și precizări
- sunt distincte două câte două
- Pentru din teste
- Se garantează existenţa a cel puţin unei soluţii
- Se recomandă folosirea întregilor pe de biţi pentru operaţia de înmultire.
Exemplu
trotuar.in
6 3 2 3
2 1
6 2
3 1
6 3
trotuar.out
4
Explicație
Sunt în total patru modalităţi distincte de a acoperi trotuarul. Trei dintre ele sunt cele din desenul de mai sus.