Fie un șir a de N numere întregi. Trebuie construit un nou șir b(tot cu N elemente) astfel:
- dacă \( {a}_{i}>0 \), atunci \( {b}_{i}={a}_{i} \)
- dacă \( {a}_{i}=0 \), atunci \( {b}_{i} \) poate avea orice valoare strict pozitivă
- dacă \( {a}_{i}<0 \), atunci \( {b}_{i} \) poate avea orice valoare strict pozitivă cu excepția lui \( -{a}_{i} \)
Se garantează că \( {a}_{1} \) și \( {a}_{N} \)au valori strict pozitive și între oricare două valori strict pozitive se va afla cel mult una strict negativă.
Cerința
Știindu-se șirul a, să se calculeze numărul de moduri de a forma șirul b astfel încât acesta să fie crescător (nu neapărat strict). Deoarece acest număr poate fi foarte mare, se va afișa doar restul împărțirii la 1.000.000 007.
Date de intrare
Fișierul de intrare crescator.in conține pe prima linie un număr natural N și pe cea de-a doua N numere întregi separate prin câte un spațiu.
Date de ieșire
Fișierul de ieșire crescator.out conține pe singura sa linie numărul cerut modulo 1.000.000 007.
Restricții și precizări
1 ≤ N ≤ 300.000- \( -300.000 ≤ {a}_{i} ≤ 300.000 \)
- Pentru
35de puncte,1 ≤ N ≤ 1000și \( -1.000 ≤ {a}_{i} ≤ 1.000 \) - Pentru alte
20de puncte, \( 0 ≤ {a}_{i} ≤ 300.000 \)
Exemplu:
crescator.in
6 1 0 3 0 -4 5
crescator.out
12
Explicație
Cele 12 șiruri crescătoare b sunt: 1 1 3 3 3 5, 1 1 3 3 5 5, 1 1 3 4 5 5, 1 1 3 5 5 5, 1 2 3 3 3 5, 1 2 3 3 5 5, 1 2 3 4 5 5, 1 2 3 5 5 5, 1 3 3 3 3 5, 1 3 3 3 5 5, 1 3 3 4 5 5, 1 3 3 5 5 5.