În clasa lui Dexter sunt N
elevi de înălțimi distincte. La ora de sport, ei sunt așezați în linie, de la stânga la dreapta. Profesorul lor, Johnny, va selecta pentru un exercițiu elevi aflați pe poziții consecutive în linie, astfel încât cel mai înalt elev dintre cei selectați să se afle în prima jumătate a acestora.
De exemplu, dacă elevii au, în ordine, înălțimile 1
, 5
, 4
, atunci profesorul poate să îi selecteze pe cei cu înălțimile 5
și 4
, dar nu poate să îi selecteze pe cei cu înălțimile 1
și 5
. Desigur, există mai multe moduri de a selecta elevii astfel încât să fie satisfăcută condiția de mai sus. Profesorul Johnny ar vrea să afle în câte moduri se poate face acest lucru.
Cerința
Dându-se N
și înălțimile elevilor din clasă, aflați în câte moduri pot fi selectați oricâți elevi aflați pe poziții consecutive, astfel încât să fie îndeplinită condiția din enunț.
Date de intrare
Fișierul de intrare leftmax.in
conține pe prima linie numărul N
, iar pe a doua linie înălțimile elevilor în ordinea în care sunt așezați în linie.
Date de ieșire
Fișierul de ieșire leftmax.out
va conține pe prima linie răspunsul la cerință, sub formă de rest al împărțirii la 1.000.000.007
(modulo 1.000.000.007
).
Restricții și precizări
1 ≤ N ≤ 100.000
1 ≤
înălțimea oricărui elev≤ N
- Dacă se selectează un număr impar de elevi, atunci considerăm că cel din mijlocul selecției se află în prima jumătate a elevilor selectați
- Pentru 10 puncte,
N ≤ 1.000
și elevii sunt ordonați descrescător după înălțime - Pentru alte 35 de puncte,
N ≤ 1.000
- Pentru alte 20 de puncte,
N ≤ 30.000
- În concurs s-au acordat 10 puncte din oficiu. Pe site se acordă 10 puncte pentru exemplu.
Exemplul 1
leftmax.in
4 1 4 2 3
leftmax.out
8
Explicație
Sunt 4
moduri de a selecta câte un singur elev.
Este un singur mod de a selecta câte doi elevi (cei cu înălțimile 4
, 2
).
Sunt 2
moduri de a selecta câte 3
elevi (cu înălțimile 4
, 2
, 3
și 1
, 4
, 2
).
Este un singur mod de a selecta toți cei 4
elevi.
În total sunt 8 modulo 1.000.000.007 = 8
moduri.
Exemplul 2
leftmax.in
7 1 2 3 4 5 6 7
leftmax.out
7
Explicație
Se pot selecta doar câte un singur elev.
Exemplul 3
leftmax.in
7 7 6 5 4 3 2 1
leftmax.out
28
Explicație
Se pot selecta oricâți elevi pe poziții consecutive.