Într-o țară în curs de dezvoltare, într-un oraș oarecare, parcarea pe care primăria dorește să o construiască are formă dreptunghiulară și o putem codifica folosind o matrice cu L
linii (numerotate de la 1
la L
) și C
coloane (numerotate de la 1
la C
). Practic, pentru a o pava pe toată ar fi necesari L x C
metri pătrați de dale. Firma care produce dalele și care este agreată de primar construiește dale cu lățimea de un metru și lungime care poate fi mai mare de un metru (dar o valoare întreagă). Firma asamblează dalele în pachete și toate pachetele au exact același conținut (dalele unui pachet pot avea lungimi diferite). Pentru că risipa banului public este în perioada sa de apogeu, primarul hotărăște să cumpere pentru fiecare coloană a parcării câte un pachet de dale și nu va putea folosi la pavarea acelei coloane decât dale din acel pachet. Se mai cunoaște și că în fiecare coloană este plantat exact un copac iar acesta nu va putea fi tăiat. Considerăm că un copac ocupă exact zona corespunzătoare unei dale 1 x 1
.
Cerința
După ce un consilier atrage atenția că e posibil ca structura pachetului achiziționat să nu permită pavarea oricărei coloane, primarul nefiind de acord cu această ipoteză hotărăște să te angajeze ca programator și să îi spui care este numărul de variante distincte de pavare a parcării. La numărarea variantelor trebuie ținut cont că toate dalele dintr-un pachet sunt de culori diferite. Considerăm distincte două modalități de pavare dacă există cel puțin o coloană unde același loc este acoperit de dale de culori diferite.
Date de intrare
Fișierul de intrare parcare1.in
conține pe prima linie numerele: N
(numărul de dale dintr-un pachet), L
(numărul de linii ale parcării), C
(numărul de coloane ale parcării). Linia a doua conține N
valori naturale nenule reprezentând lungimile dalelor (ele au lățimea 1
). Pot fi dale de aceeași dimensiune, ele diferă însă prin culoare. Linia a treia conține C
numere, al i
-lea reprezentând linia pe care se află copacul de pe coloana i
. Numerele de pe fiecare linie sunt separate prin câte un spațiu.
Date de ieșire
Fișierul de ieșire parcare1.out
conține numărul de modalități de pavare, modulo 666013
.
Restricții și precizări
1 ≤ N ≤ 20
2 ≤ L ≤ 20
1 ≤ C ≤ 100 000
- Lungimile dalelor sunt numere naturale nenule mai mici decât
L
- Valorile de pe ultima linie a fișierului de intrare sunt cuprinse între
1
șiL
, inclusiv
Exemplu:
parcare1.in
5 7 2 1 2 3 4 5 4 2
parcare1.out
12