#include <iostream>
#include <algorithm>
#define INF 1000000000
using namespace std;
int n,mp[100010],dp[100010];
bool visited[100010];

int mk_mp(int ima){
  if(visited[ima]||mp[ima]==-INF) return -INF;
  visited[ima]=1;
  if(mp[ima]!=0) mp[ima]+=mk_mp(ima+mp[ima]);
  if(mp[ima]<-10000000) mp[ima]=-INF;
  visited[ima]=0;
  return mp[ima];
}

int main(){
  cin >> n;
  for(int i=0;i<n;i++)cin>>mp[i];
  for(int i=1;i<n;i++)mp[i]=mk_mp(i),dp[i]=-1;
  
  int cnt=0;
  while(dp[n-1]==-1){
    cnt++;
    for(int i=0;i<n;i++)
      if(dp[i]==cnt-1)
	for(int j=1;j<=6;j++){
	  int nx=i+j;
	  while(nx>=0&&mp[nx]!=0)nx+=mp[nx];
	  if(nx>=0&&dp[nx]==-1)dp[nx]=cnt;
	}
  }
  cout<<cnt<<endl;
  return 0;
}