from collections import deque N = int(input()) R = list(map(int, input().split())) seen = [False]*N dis = [0]*N posi = 0 d = deque() d.append(0) while d: v = d.popleft() if v == N-1: break for i in range(max(posi, v+1), R[v]): if not seen[i]: dis[i] = dis[v]+1 seen[i] = True d.append(i) posi = max(posi, R[v]) print(dis[-1])