eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Работа с забором

Работа с забором

Фермер Фред хочет переделать забор в своем доме. Забор Фреда состоит n вертикальных деревянных досок разной высоты. Высота i-ой доски равна hi (1hin). Изначально все высоты различны.

Чтобы изменить конструкцию забора, Фред выбирает несколько смежных сегментов [l ... r] досок и “выравнивает“ их, разрезав так, чтобы все высоты были равны минимальной высоте на этом сегменте. Более конкретно, новые высоты сегмента становятся hi' = min{hl, hl+1, ..., hr} для всех lir.

Сколько различных конструкций может получить Фред, применив эту процедуру несколько (возможно, 0) раз? Поскольку ответ может быть большим, выведите его по модулю 109 + 7.

Две конструкции A и B отличаются, если есть доска, высота которой в A отличается от высоты в B.

Входные данные

Первая строка содержит количество досок n (1n3000) забора Фреда.

Вторая строка содержит n различных целых чисел hi (1hin, 1in) - высоты каждой из досок.

Выходные данные

Выведите одно целое число - количество различных возможных конструкций забора, которое можно получить, по модулю 109 + 7.

Ліміт часу 1 секунда
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
3
1 3 2
Вихідні дані #1
4
Вхідні дані #2
5
1 2 3 4 5
Вихідні дані #2
42
Вхідні дані #3
7
1 4 2 5 3 6 7
Вихідні дані #3
124
Джерело 2020 SEERC South Eastern European Regional Programming Contest, Винница и Бухарест, Май 23, Задача F