printРабочее место участника


1950. Relief

Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Some people like to pretend that they are a pharaoh. Or a dolphin. Luka is one such person. He has built a relief consisting of a long line of `N` columns with nonnegative integer heights. The heights of all columns were initially zero. The relief was build in steps, where in each step Luka would select a contiguous subsequence of columns with equal heights and raise all columns in the subsequence, except the first and last column, by one.


Hundreds of years have passed, and some of the columns have been stolen. Luka's great-great-…-great-grandson is trying to determine the number of possible reliefs that could have been built by Luka such that the remaining columns' heights match the original relief.
The first line of input contains the positive integer `N` (`1\ ≤\ \ N\ \ ≤\ 10\ 000`), the number of columns in Luka's relief.
The second line of input contains `N` space-separated integers `h_i` (`-1\ ≤\ h_i\ ≤\ 10\ 000`), the column heights.
A height of `-1` represents a stolen column.
The first and only line of output must contain the required number of possible reliefs modulo `1\ 000\ 000\ 007`.

Sample Input #1

-1 2 -1

Sample Output #1


Sample Input #2

-1 -1 -1

Sample Output #2


Sample Input #3

-1 -1 -1 2 -1 -1

Sample Output #3

Source: COCI 2012/2013, contest #6