다오는 폭탄 터트리기 게임을 하려고 한다. 게임에서는 폭탄 개가 좌우로 한줄로 주어진다. 왼쪽에서 번째 폭탄은 자연수 값 를 가진다.

값이 인 폭탄을 클릭하면 그 폭탄과, 폭탄에 연속적으로 인접하면서 값이 이상 이하인 것들이 모두 터진다. 예를 들어, 위 그림에서 이라고 하고, 왼쪽에서 세 번째 폭탄을 터트린 경우 아래와 같은 상황이 된다.

위 그림 처럼 폭탄이 터진 자리는 그대로 남아 있어서, 처음에 인접하지 않았던 폭탄의 쌍은 그 이후에도 인접하지 않다.
폭탄을 클릭하는 횟수가 많을수록 점수가 줄어들어서, 다오는 폭탄을 최소 횟수로 클릭해서 게임을 해결하고 싶다.
주어진 폭탄들과 의 값을 입력으로 받아 최소 클릭 횟수를 계산하는 프로그램을 작성하라.
입력 형식
첫 줄에 폭탄의 개수를 나타내는 정수 과 폭탄의 범위를 나타내는 정수 가 공백으로 구분되어 주어진다. ( )
둘째 줄에 개의 정수 , , 이 공백으로 구분되어 주어진다. ()
출력 형식
최소의 선택 횟수를 출력한다.
예제
입력
5 3 1 3 2 5 4
출력
2
예제 설명
제일 왼쪽의 값이 인 폭탄을 클릭하면 왼쪽 개의 폭탄이 터진다. 그 다음 값이 인 폭탄을 클릭하면 하나만 터진다. 마지막으로 남은 폭탄을 클릭하면 번의 클릭으로 해결이 된다.
하지만, 세 번째의 값이 인 폭탄을 클릭하면 제일 왼쪽의 폭탄을 제외한 모든 폭탄이 터진다. 마지막으로 제일 왼쪽의 폭탄을 클릭하면 게임이 해결된다.
따라서 답은 이다.
채점 방식
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 11점
종류 2: 36점
종류 3: 53점
추가적인 제한 조건이 없음.
해설
가장 작은 값을 가진 폭탄은 반드시 터뜨려야 한다. 따라서, 현재 상태에서 가장 작은 값을 가진 폭탄을 골라 터뜨리는 것을 계속 반복하여 모든 폭탄을 없애는 것이 최적의 전략이다. 가장 작은 값을 가진 폭탄을 고르는 것은 우선순위 큐를 사용하거나, 처음에 모든 폭탄을 오름차순으로 정렬한 뒤 이미 제거된 폭탄은 건너뛰는 방식으로 구현할 수 있다. 폭탄을 터뜨리는 것은 터뜨릴 폭탄에서 출발하여 이미 제거된 폭탄이나 터지지 않는 폭탄을 만날 때까지 좌우로 이동하는 방식으로 구현할 수 있다. 시간복잡도는 이다.