Cerință
Gigi este antrenor de fotbal și astăzi vrea să organizeze diferit antrenamentul. Până acum toți jucătorii se antrenau împreună, dar astăzi vrea să îi împartă pe grupe. Gigi are la echipă fotbaliști, fiecare având un rating ce reprezintă cât de talentat este: , , , , . Gigi vrea să organizeze antrenamentul astfel: vrea să îi împartă în grupe, reprezentate de subsecvențe consecutive în șirul . Fiecare grupă are asociat un rating. Șirul ratingurilor grupelor este strict crescător. Ratingul unei grupe este definit de cel mai slab rating al jucătorilor din grupa respectivă.
Exemplu
Dacă jucătorii au ratingurile și grupele au ratingurile , putem face următoarele două partiții:
- | | ;
- | | .
Cunoscând numărul de fotbaliști, numărul de grupe, ratingurile fotbaliștilor și ratingurile asociate grupelor, se cere să îl ajutați pe Gigi să calculeze câte astfel de repartizări poate să creeze. Deoarece există foarte multe variante, afișați răspunsul modulo .
Date de intrare
Pe prima linie a fișierului de intrare antrenament.in
se găsesc numerele (numărul de fotbaliști) si (numărul de grupe).
A doua linie conține numere: , , , , . (ratingurile fotbaliștilor).
A treia linie conține numere sortate crescător: , , , , (ratingurile grupelor).
Date de ieșire
Pe prima linie a fișierului de ieșire antrenament.out
se va găsi un singur număr ce reprezintă numărul de modalități de a împărți fotbaliștii în grupe.
Restricții și precizări
- Pentru din teste ;
- ;
- Ratingurile jucătorilor ;
- Ratingurile echipelor ;
- Șirul ratingurilor grupelor este ordonat crescător;
- Fiecare jucător aparține unei singure grupe.
Exemplul 1
antrenament.in
6 3
12 10 20 20 25 30
10 20 30
antrenament.out
2
Exemplul 2
antrenament.in
7 2
1 2 2 2 2 2 2
1 2
antrenament.out
6