블록 쌓기

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

문제

제시카는 생일 선물로 쌓기 블록 한 세트를 받았습니다. 블록은 모두 같은 크기의 정육면체이고, 각 블록에는 양의 정수가 하나씩 적혀 있습니다. 선물이 무척 마음에 든 제시카는 곧바로 모든 블록을 하나의 높은 탑으로 쌓았습니다.

엄마는 놀이 규칙을 알려 주었습니다. 가능한 한 많은 블록이 제자리에 오도록 탑을 다듬는 것입니다. 어떤 블록에 적힌 수가 ii일 때, 그 블록이 높이 ii에 놓여 있으면 제자리에 있는 것입니다. 맨 아래 블록의 높이는 11, 그 위 블록의 높이는 22, 이런 식으로 높이를 셉니다.

제시카는 블록 몇 개를 조심스럽게 빼낼 수 있습니다. 블록을 하나 빼내면 그 위에 있던 블록들이 한 칸씩 내려오고, 높이는 맨 아래부터 다시 매겨집니다. 제시카는 제자리에 남는 블록의 수가 최대가 되도록 블록을 빼내려고 합니다.

처음에 쌓은 탑이 주어질 때, 제자리에 오게 만들 수 있는 블록 수의 최댓값을 구하세요.

입력

첫째 줄에 탑의 처음 높이를 나타내는 정수 nn (1n1000001 \le n \le 100000)이 주어집니다. 둘째 줄에는 nn개의 양의 정수 a1,a2,,ana_1, a_2, \ldots, a_n (1ai10000001 \le a_i \le 1000000)이 공백 하나로 구분되어 주어집니다. aia_i는 처음 탑에서 높이 ii에 있는 블록에 적힌 수이며, 맨 아래 블록부터 맨 위 블록 순서로 주어집니다.

출력

제자리에 오게 만들 수 있는 블록 수의 최댓값을 정수 하나로 출력하세요.

힌트