#include <bits/stdc++.h>
using namespace std;
const long long N = 2e5 + 10;
long long n;
long long bit[N], a[N];
vector<long long> V[N];
void update(long long i, long long x) {
  while (i <= n) {
    bit[i] += x;
    i += (i & (-i));
  }
}
long long get(long long i) {
  long long sum = 0;
  while (i > 0) {
    sum += bit[i];
    i -= (i & (-i));
  }
  return sum;
}
int main() {
  scanf("%lld", &n);
  for (long long i = 1; i <= n; i++) {
    scanf("%lld", &a[i]);
    update(i, 1);
    V[min(a[i], n)].push_back(i);
  }
  long long ans = 0;
  for (long long i = 1; i <= n; i++) {
    if (a[i] > i) {
      long long g = min(a[i], n) - i;
      ans += get(i + g) - get(i);
    }
    for (long long j = 0; j < V[i].size(); j++) {
      long long g = V[i][j];
      update(g, -1);
    }
  }
  printf("%lld", ans);
  return 0;
}
