Hands that shed innocent blood!

There are n guilty people in a line, the i-th of them holds a claw with length Li. The bell rings and every person kills some of people in front of him. All people kill others at the same time. Namely, the i-th person kills the j-th person if and only if j < i and j ≥ i - Li.

You are given lengths of the claws. You need to find the total number of alive people after the bell rings.

Input

The first line contains one integer n (1 ≤ n ≤ 106) — the number of guilty people.

Second line contains n space-separated integers L1, L2, ..., Ln (0 ≤ Li ≤ 109), where Li is the length of the i-th person's claw.

Output

Print one integer — the total number of alive people after the bell rings.

Examples

Input

4
0 1 0 10


Output

1


Input

2
0 0


Output

2


Input

10
1 1 3 0 0 0 2 1 0 3


Output

3

Note

In first sample the last person kills everyone in front of him.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class test{ 
	public static class MyScanner {
	      BufferedReader br;
	      StringTokenizer st;
	 
	      public MyScanner() {
	         br = new BufferedReader(new InputStreamReader(System.in));
	      }
	 
	      String next() {
	          while (st == null || !st.hasMoreElements()) {
	              try {
	                  st = new StringTokenizer(br.readLine());
	              } catch (IOException e) {
	                  e.printStackTrace();
	              }
	          }
	          return st.nextToken();
	      }
	 
	      int nextInt() {
	          return Integer.parseInt(next());
	      }
	      
	      void nextArrayInt(long[] array,int n){
	    	  
	    	  try {
				st = new StringTokenizer(br.readLine());
	    	  } catch (IOException e) { }
	    	  
	    	  for(int a=0;a<n;a++){
	    		  array[a] = Long.parseLong((st.nextToken()));
	    	  }
	    	  
	      }
	 
	      long nextLong() {
	          return Long.parseLong(next());
	      }
	 
	      double nextDouble() {
	          return Double.parseDouble(next());
	      }
	 
	      String nextLine(){
	          String str = "";
		  try {
		     str = br.readLine();
		  } catch (IOException e) {
		     e.printStackTrace();
		  }
		  return str;
	      }

	   }
	
	private static void doSort(long array[],int start, int end) {
        if (start >= end)
            return;
        int i = start, j = end;
        int cur = i - (i - j) / 2;
        while (i < j) {
            while (i < cur && (array[i] <= array[cur])) {
                i++;
            }
            while (j > cur && (array[cur] <= array[j])) {
                j--;
            }
            if (i < j) {
                long temp = array[i];
                array[i] = array[j];
                array[j] = temp;
                if (i == cur)
                    cur = j;
                else if (j == cur)
                    cur = i;
            }
        }
        doSort(array,start, cur);
        doSort(array,cur+1, end);
    }
	
    public static void main(String[] args) { 
    	MyScanner sc = new MyScanner();
    	
    	int n = sc.nextInt();
    	
    	long[] mas = new long[n];
    	long[] razn = new long[n];
    	
    	//mas[0] = sc.nextLong();
    	
    	for(int a=0;a<n;a++){
    		mas[a] = sc.nextLong();
    		if(mas[a]>0){
    			int temp = (int) (a-mas[a]);
    			if(temp<0){
    				temp=0;
    			}
    			razn[temp]+=1;
    			razn[a]-=1;
    		}
    	}
    	
    	/*for(int a=0;a<n;a++){
    		System.out.println(razn[a]);
    	}
    	*/
    	long vost = 0;
    	int answ = 0;
    	//System.out.println("aaa");
    	for(int a=0;a<n;a++){
    		vost += razn[a];
    		if(vost == 0){
    			answ++;
    		}
    		//System.out.println(vost);
    	}
    	System.out.println(answ);
    } 
    
}