eolymp
bolt
Try our new interface for solving problems
Problems

Сумма разнообразий

Сумма разнообразий

Последовательность целых чисел будем называть \textbf{почти монотонной}, если к некоторому числу она возрастает, после чего она убывает. То есть, для некоторого \textbf{1} ≤ \textbf{k} ≤ \textbf{n} виполняется: \textbf{a_1} ≤ \textbf{a_2} ≤ ... ≤ \textbf{a_k}, \textbf{a_k} ≥ \textbf{a_\{k+1\}} ≥ ... ≥ \textbf{a_n}. \textbf{Разнообразие} последовательности \textbf{a_1, a_2, ..., a_n }определим как количество возможных последовательностей целых чисел \textbf{b_1, b_2, ..., b_n}, для которых \textbf{0} ≤ \textbf{b_i} < \textbf{a_i} и все числа \textbf{b_1, b_2, ..., b_n} -- разные. Ваша задача, найти суму разнообразий всех разных почти монотонных подпоследовательностей заданной последовательности по модулю \textbf{1 000 000 007}. Подпоследовательностью будем называть любую последовательность чисел, полученную удалением некоторого количества чисел (возможно нулевое) из заданной последовательеости. Пустую последовательность будем считать подпоследовательностью любой. Две последовательности разные, если существует позиция в которой числа в последовательностях отличаются одно от другого. \InputFile В первой строке находится число \textbf{N} (\textbf{1} ≤ \textbf{N} ≤ \textbf{100}) -- количество элементов входной последовательности. Во второй строке записана последовательность целых чисел \textbf{c_i} (\textbf{1} ≤ \textbf{c_i} ≤ \textbf{100}) -- элементы заданной последовательности. \OutputFile В единственной строке должно находится найденное число по модулю \textbf{1 000 000 007}.
Time limit 1 second
Memory limit 64 MiB
Input example #1
3
2 3 1

Output example #1
15

Example description: Разнообразие (пустая последовательность) = 1 Разнообразие (2) = 2 Разнообразие (3) = 3 Разнообразие (2 3) = 4 Разнообразие (1) = 1 Разнообразие (2 1) = 1 Разнообразие (3 1) = 2 Разнообразие (2 3 1) = 1 Всего: 15