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.
#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-7;
int n, cnt = 0;
;
vector<vector<int>> graph;
vector<int> ans;
set<int> a;
bool isOk = false;
void dfs(int x) {
  a.insert(x);
  if (!graph[x].empty()) {
    cnt++;
    isOk = false;
    for (int j = 0; j < graph[x].size(); ++j) {
      if (a.find(graph[x][j]) == a.end()) {
        dfs(graph[x][j]);
        isOk = true;
      }
    }
    if (isOk == false) {
      ans.push_back(cnt - 1);
    }
    isOk = false;
    cnt--;
  } else {
    ans.push_back(cnt);
  }
  a.erase(x);
}
long long sqr(long long l) { return l * l; }
int gcd(int del, int num) {
  int x;
  while (num != 0) {
    x = del % num;
    del = num;
    num = x;
  }
  return del;
}
bool isSimple(int n) {
  for (long long i = 2; i <= sqrt((double)n); i++) {
    if (n % i == 0) {
      return false;
    }
  }
  return true;
}
int main() {
  long long n;
  scanf("%I64d", &n);
  vector<long long> l(n);
  for (int i = 0; i < n; ++i) {
    scanf("%I64d", &l[i]);
  }
  long long ans = n, idx = n - 1;
  for (int i = n - 1; i > 0; i--) {
    if (idx > i - l[i] && l[i] > 0) {
      if ((i - idx) > 0) {
        ans += i - idx;
      }
      if (l[i] > i) {
        ans -= i;
        idx = 0;
        break;
      } else {
        ans -= l[i];
        idx = i - l[i];
      }
    }
  }
  if (ans <= 0) {
    ans = 1;
  }
  printf("%I64d\n", ans);
  return 0;
}
