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.util.Scanner;


public class CF892B 
{
	public static void main(String[] args)
	{
		CF892B task = new CF892B();
		Problem solver = task.new Problem();
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		long[] l = new long[n];
		for(int i = 0; i < n; i++)
			l[i] = in.nextLong();
		System.out.println(solver.solve(n, l));
	}
	
	public class Problem
	{
		public Problem()
		{
			
		}
		
		public class Cell
		{
			public Cell(int _index)
			{
				index = _index;
			}
			
			private int index = 0;
			private long clawLength = 0;
			private boolean state = false;
			
			public int getIndex()
			{
				int ans = 0;
				
				ans = index;
				
				return ans;
			}
			
			public long getClawLength()
			{
				long ans = 0;
				
				ans = clawLength;
				
				return ans;
			}
			
			public boolean isDead()
			{
				boolean ans = false;
				
				ans = state;
				
				return ans;
			}
			
			public void setDead()
			{
				state = true;
			}
			
			public void setClawLength(long len)
			{
				clawLength = len;
			}
		}
		
		public int solve(int n,long[] l)
		{
			int ans = 0;
			
			Cell[] peoples = new Cell[n + 1];
			
			for(int i = 1; i < peoples.length; i++)
			{
				peoples[i] = new Cell(i);
				peoples[i].setClawLength(l[i - 1]);
			}
			long limit = peoples[peoples.length - 1].getIndex();
			for(int i = peoples[n].getIndex(), j = i - 1; i >= 1 && j >= 1; i--,j--)
			{
				limit = Math.min((peoples[i].getIndex() - peoples[i].getClawLength()), limit);
				if(j >= limit)
				{	
					peoples[j].setDead();
				}
			}
			for(int i = 1; i < peoples.length; i++)
			{
				if(peoples[i].isDead() == false)
				{
					ans++;
				}
			}
			
			return ans;
		}
	}
	
}
