Gigel lucrează într-un depozit şi trebuie să aşeze lăzi pe un singur rând. Înălţimile lăzilor pot să difere. Pentru a le gestiona mai uşor, Gigel a hotărât că le va aranja în formă de munte, astfel încât toate lăzile să fie vizibile fie din stânga, fie din dreapta, iar "vârful" să fie vizibil din ambele părţi. Gigel doreşte să afle în câte moduri distincte ar putea aranja cele lăzi astfel încât toate să fie vizibile. De exemplu, dacă avem lăzi cu înălţimile , , , , , atunci există moduri de aranjare, după cum urmează:
Să observăm că, dacă în exemplul de mai sus am avea două lăzi de înălţime maximă , Gigel nu ar putea aşeza lăzile în formă de munte, întrucât el doreşte ca vârful muntelui de lăzi să fie unic, iar înălţimile lăzilor de pe oricare latură a muntelui să fie un şir strict crescător.
Cerinţă
Realizaţi un program care determină numărul aranjărilor distincte posibile. Două aranjări sunt considerate distincte, dacă şirurile înălţimilor lăzilor diferă pe cel puţin o poziţie.
Date de intrare
Fişierul munte.in
conţine pe prima linie numărul natural de lăzi, iar pe următoarele linii câte un număr natural reprezentând înălţimea unei lăzi.
Date de ieșire
Fişierul munte.out
va conţine pe prima linie un singur număr, reprezentând numărul modalităţilor distincte de aranjare .
Restricții și precizări
- înălţimile lăzilor
Exemplul 1
munte.in
5
3
1
3
2
4
munte.out
4
Exemplul 2
munte.in
4
2
4
4
2
munte.out
0