N개의 마을이 일렬로 1번부터 N번까지 순서대로 산등성이를 따라 있다. 각 마을의 높이는 1 이상 N 이하의 자연수 중 하나이며 서로 다르다. 외침을 막기 위해 마을을 여러 구간으로 나누어, 각 구간의 가장 높은 마을에 봉화대를 설치하려 한다. 각 구간은 하나 이상의 연속된 마을을 포함해야 하고, 각 마을은 정확히 하나의 구간에 포함되어야 한다. 봉화대의 효율적인 상호 통신을 위해, 봉화대가 설치된 마을의 높이는 번호의 오름차순으로 봤을 때 증가해야 한다. 전략 도모를 위해 가능한 구간 배치의 개수를 파악해보고자 한다.
![]() | ![]() |
| 그림 H.1: 조건을 만족한 봉화대 설치 예시 | 그림 H.2: 조건을 만족하지 않은 봉화대 설치 예시 |
첫째 줄에는 마을의 개수를 의미하는 정수 N이 주어진다. (1≤N≤500 000)
둘째 줄에는 각 마을의 높이를 의미하는 N개의 정수 h_1,h_2,⋯,h_N이 공백으로 구분되어 주어진다. (1≤h_i≤N)
h_i는 i번째 마을의 높이를 의미하며 서로 다르다.
조건을 만족하며 N개의 마을을 구간으로 나누는 방법의 가짓수를 1 000 000 007로 나눈 나머지를 출력한다.
첫 번째 예제의 가능한 모든 배치는 (1 / 4 / 2 5 3), (1 / 4 2 / 5 3), (1 / 4 2 5 3), (1 4 / 2 5 3), (1 4 2 / 5 3), (1 4 2 5 3) 이다. /는 구간의 경계이며, 봉화대는 밑줄로 강조된 높이의 마을에 설치된다.