Pentru un șir de numere \( A \) se definește următoarea funcție de cost: \( f(A) = 1 \cdot v_1 + 2 \cdot v_2 + … + k \cdot v_k \), unde \( [v_1, v_2, …, v_k] \) sunt valorile distincte ale lui \( A \), ordonate crescător.
Cerința
Fiind dat un șir de N numere naturale A, să se calculeze suma aplicării funcției f pe toate subsecvențele lui A (i.e. suma după (1 ≤ i ≤ j ≤ N) din f(A[i...j]), unde A[i…j] este subsecvența de la i la j).
Date de intrare
Fișierul sortall.in conține pe prima linie numărul natural N. Linia a doua conține N numere naturale separate prin spațiu, reprezentând elementele șirului A.
Date de ieșire
Fișierul sortall.out va conține răspunsul modulo 1 000 000 007.
Restricții și precizări
1 ≤ N ≤ 50 0001 ≤ Vi ≤ N- Pentru
10puncte1 ≤ N ≤ 100 - Pentru alte
15puncte1 ≤ N ≤ 1000 - Pentru alte
15puncte1 ≤ N ≤ 5000 - Pentru alte
20de puncte se garanteză că valorile din șir sunt distincte
Exemplu 1:
sortall.in
3 1 3 2
sortall.out
35
Exemplu 2:
sortall.in
8 4 3 4 4 7 1 2 1
sortall.out
861