Олег и двоичные последовательности

아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

Олег очень любит двоичные последовательности --- последовательности из нулей и единиц. Совсем недавно он написал в тетради очередную двоичную последовательность из nn элементов. Для выписанной последовательности Олег посчитал Z-функцию.

Z-функцией последовательности s_1,,s_ns\_1, \ldots, s\_n называется массив z\[1..n]z\[1..n], в котором:

  • z\[1]=0z\[1] = 0;
  • Если i>1i > 1, то z\[i]z\[i] равно длине наибольшего общего префикса последовательности ss и суффикса последовательности ss, начинающегося с ii-й позиции. Иначе говоря, z\[i]z\[i] равно максимальному kk, такому что s_1=s_is\_1 = s\_i, s_2=s_i+1s\_2 = s\_{i+1}, \dots, s_k=s_i+k1s\_{k} = s\_{i+k-1}.

Например, для последовательности s=0,0,1,1,0,0,1s = \langle 0, 0, 1, 1, 0, 0, 1 \rangle Z-функция следующая: z=0,1,0,0,3,1,0z = \langle 0, 1, 0, 0, 3, 1, 0\rangle.

Записав в тетради последовательность и ее Z-функцию, Олег лег спать. Пока он спал, его младший брат Егор прокрался в комнату и закрасил фломастером последовательность и некоторые значения Z-функции. Проснувшись, Олег заинтересовался, сколько различных двоичных последовательностей он мог вечером написать в тетради, чтобы незакрашенные значения Z-функции были правильными. 

Найдите число искомых последовательностей и выведите его по модулю 109+710^9 + 7. Заметьте, что Олег мог и ошибиться при вычислении Z-функции, в этом случае ни одна последовательность не подходит и ответ равен 0.

입력

В первой строке входного файла находится целое число nn --- длина исходной двоичной последовательности (1n10001 \le n \le 1000). Во второй строке входного файла находятся nn целых чисел z\[1],,z\[n]z\[1], \ldots, z\[n], где z\[i]z\[i] --- значение Z-функции в позиции ii, или 1-1, если значение в ii-й позиции было закрашено (1z\[i]n-1 \le z\[i] \le n).

출력

В выходной файл выведите единственное число --- остаток от деления числа подходящих двоичных последовательностей на число 109+710^9 + 7.

힌트

В первом примере подходят последовательности 0,1,0\langle 0, 1, 0 \rangle и 1,0,1\langle 1, 0, 1 \rangle.

Во втором примере не существует ни одной двоичной последовательности длины 4 с заданной Z-функцией.

В третьем примере z\[2]=3z\[2] = 3, что противоречит определению Z-функции, поэтому ответ 0.

В четвертом примере подходит любая двоичная последовательность длины 3.