Fascinată de cultura chineză și Marele Zid Chinezesc, Andra s-a hotărât să își construiască propriul zid în miniatură, de înălțime N
și lățime M
, din piese roșii și galbene pe care le deține.
Ea are la dispoziție un număr nelimitat de piese cu lățimea de o unitate și toate înălțimile posibile.
Piesele roșii (hóng) au înălțimea impară (1, 3, 5, ...
), pe când piesele galbene (huáng) au înălțimea pară (2, 4, 6, ...
). Piesele nu pot fi rotite și pot fi plasate doar pe verticală.
Deoarece culoarea galbenă este considerată cea mai prestigioasă în cultura chineză, Andra vrea ca suma lungimilor tuturor pieselor galbene ce alcătuiesc zidul să fie egală cu un număr K
, special ales astfel încât să aducă noroc. Mai mult de atât, ea se întreabă în câte moduri poate construi zidul astfel încât această condiție să fie respectată.
Întrucât această cerință “pare chineză” pentru ea (chiar dacă este vorbitoare de limba chineză!), a decis să vă ceară ajutorul, auzind că vă simțiți norocoși în anul dragonului.
Cerința
Date fiind N
, M
și K
, determinați numărul de moduri de a construi zidul în condițiile date.
Date de intrare
Singura linie a fișierului de intrare zid.in
conține valorile N
, M
și K
, cu semnificația din enunț.
Date de ieșire
Singura linie a fișierului de ieșire zid.out
va conține numărul de moduri de a construi zidul modulo 1.000.000.007
.
Restricții și precizări
1 ≤ N, M ≤ 5000
0 ≤ K ≤ N
- Două modalități de a construi zidul se consideră identice dacă sunt formate din aceleași tipuri de piese plasate în același mod. De exemplu, există două moduri de a construi un zid de
4 x 1
complet galben. - Pentru 10 puncte,
N ≤ 6
,M = 1
- Pentru 16 puncte,
N ≤ 500
,M = 1
- Pentru 5 puncte,
N ≤ 2500
,M = 1
,K = N
- Pentru 6 puncte,
N ≤ 2500
,M = 1
,K = 0
- Pentru 14 puncte,
N ≤ 2500
,M = 1
- Pentru 4 puncte,
N ≤ 500
,M = 2
- Pentru 2 puncte,
N ≤ 500
,M = 3
- Pentru 5 puncte,
N ≤ 2500
,M = 4
- Pentru 17 puncte,
N ≤ 2500
,M ≤ 10
- Pentru 14 puncte,
N ≤ 2500
,M ≤ 2500
- Pentru 7 puncte,
N ≤ 5000
,M ≤ 5000
Exemplul 1:
zid.in
5 1 2
zid.out
6
Explicație
Toate cele 6
configurații de ziduri cu înălțimea 5
, lățimea 1
și K=2
posibile sunt ilustrate în prima figură.
Exemplul 2:
zid.in
2 2 2
zid.out
2
Explicație
Cele 2
configurații sunt ilustrate în cea de a doua figură.