#include <bits/stdc++.h>
using namespace std;
struct Node {
  int id, k;
};
const int N = 2e5 + 10;
int a[N];
int C[N];
Node b[N];
int n;
int lowbit(int x) { return (x & -x); }
int sum(int x) {
  int ret = 0;
  while (x > 0) {
    ret += C[x];
    x -= lowbit(x);
  }
  return ret;
}
void add(int x, int d) {
  while (x <= n) {
    C[x] += d;
    x += lowbit(x);
  }
}
bool cmp(const Node& x, const Node& y) {
  if (x.k == y.k) return x.id < y.id;
  return x.k < y.k;
}
int main() {
  long long tot;
  int p;
  scanf("%d", &n);
  memset(C, 0, sizeof(C));
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  if (n == 1) {
    printf("0\n");
    return 0;
  }
  for (int i = 2; i <= n; i++) {
    b[i].k = min(a[i], i - 1);
    b[i].id = i;
  }
  sort(b + 2, b + n + 1, cmp);
  p = 2;
  tot = 0;
  for (int i = 1; i <= n; i++) {
    if (a[i] > i) {
      add(i + 1, 1);
      add(min(a[i], n) + 1, -1);
    }
    while (p <= n && b[p].k == i) {
      tot += sum(b[p].id);
      p++;
    }
    if (p > n) break;
  }
  printf("%I64d\n", tot);
  return 0;
}
