#include <stdio.h>
#include <stdlib.h>

typedef struct {
	long value;
	long type;
} S_DATA;

int cmpAscVal(const void * n1, const void * n2)
{
	if (((S_DATA *)n1)->value > ((S_DATA *)n2)->value)
	{
		return 1;
	}
	else if (((S_DATA *)n1)->value < ((S_DATA *)n2)->value)
	{
		return -1;
	}
	else
	{
		return 0;
	}
}

int main(void) {

  long n;
  scanf("%ld", &n);
  long a[n];
  S_DATA pair_count[n*2];
  for (long i = 0; i < n; i++) {
    scanf("%ld", &a[i]);
    pair_count[i].value = i+1+a[i];
    pair_count[i].type = 0;
    pair_count[i+n].value = i+1-a[i];
    pair_count[i+n].type = 1;
  }
  qsort(pair_count, n*2, sizeof(S_DATA), cmpAscVal);
  long count0 = 0;
  long count1 = 0;
  long pairs = 0;
  for (long i = 0; i < n*2; i++) {
    if (i != 0 && pair_count[i].value != pair_count[i-1].value) {
      pairs += count0*count1;
      count0 = 0;
      count1 = 0;
    }
    if (pair_count[i].type == 0) {
      count0++;
    } else {
      count1++;
    }
  }
  pairs += count0*count1;
  printf("%ld\n", pairs);

  return 0;
}