#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void checkmin(T &a, const T &b) {
  if (b < a) a = b;
}
template <class T>
inline void checkmax(T &a, const T &b) {
  if (b > a) a = b;
}
const int inf = 1e9 + 10;
const int maxn = 2e5 + 10;
int a[maxn], n;
long long bit[maxn];
map<int, vector<int> > Map;
void add(int i) {
  while (i <= n) {
    bit[i]++;
    i += i & -i;
  }
}
long long sum(int i) {
  long long ret = 0ll;
  while (i > 0) {
    ret += bit[i];
    i -= i & -i;
  }
  return ret;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= n; i++) Map[a[i]].push_back(i);
  for (map<int, vector<int> >::iterator it = Map.begin(); it != Map.end(); it++)
    if (it->first >= n)
      for (int i = 0; i < it->second.size(); i++) add(it->second[i]);
  long long ans = 0ll;
  for (int i = n; i >= 2; i--) {
    ans += sum(min(a[i], i - 1));
    for (int j = 0; j < Map[i - 1].size(); j++) add(Map[i - 1][j]);
  }
  printf("%lld\n", ans);
  return 0;
}
