eolymp
bolt
Try our new interface for solving problems
Məsələlər

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

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

Фермер Фред хочет переделать забор в своем доме. Забор Фреда состоит 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.

Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 256 MiB
Giriş verilənləri #1
3
1 3 2
Çıxış verilənləri #1
4
Giriş verilənləri #2
5
1 2 3 4 5
Çıxış verilənləri #2
42
Giriş verilənləri #3
7
1 4 2 5 3 6 7
Çıxış verilənləri #3
124
Mənbə 2020 SEERC South Eastern European Regional Programming Contest, Винница и Бухарест, Май 23, Задача F