# 雰囲気で書いたら通ってしまったがなんで通ったかわからん

# i<jという前提を無視しているのではと感じる



N = int(eval(input()))

A = list(map(int, input().split()))

# i<jとして、条件は j-i = A_i + A_j

# i + A_i = j - A_j



dict1 = {}

for i in range(1, N + 1):

    tmp = i + A[i - 1]

    if tmp not in dict1:

        dict1[tmp] = 1

    else:

        dict1[tmp] += 1



dict2 = {}

for i in range(1, N + 1):

    tmp = i - A[i - 1]

    if tmp not in dict2:

        dict2[tmp] = 1

    else:

        dict2[tmp] += 1



# print(dict1, dict2)

ans = 0

for k, v in list(dict1.items()):

    if k in dict2:

        ans += v * dict2[k]

print(ans)

import sys

from collections import defaultdict



read = sys.stdin.buffer.read

readline = sys.stdin.buffer.readline

readlines = sys.stdin.buffer.readlines



N, *A = list(map(int, read().split()))



memo = defaultdict(int)  # 0で初期化する

answer = 0

for idx, x in enumerate(A, 1):  # indexを1から始める

    # i<jを満たしながらansを計算

    # idx = 1の時はansが増えることはない

    # idx = 2の時は、idx = 1の時の結果がmemoに記録されている

    # idx = 3の時は、idx=1,2の結果が記録されている

    # 以下同様

    answer += memo[idx - x]

    memo[idx + x] += 1



print(answer)

# 雰囲気で書いたら通ってしまったがなんで通ったかわからん
# i<jという前提を無視しているのではと感じる
N = int(eval(input()))
A = list(map(int, input().split()))
# i<jとして、条件は j-i = A_i + A_j
# i + A_i = j - A_j
dict1 = {}
for i in range(1, N + 1):
    tmp = i + A[i - 1]
    if tmp not in dict1:
        dict1[tmp] = 1
    else:
        dict1[tmp] += 1
dict2 = {}
for i in range(1, N + 1):
    tmp = i - A[i - 1]
    if tmp not in dict2:
        dict2[tmp] = 1
    else:
        dict2[tmp] += 1
# print(dict1, dict2)
ans = 0
for k, v in list(dict1.items()):
    if k in dict2:
        ans += v * dict2[k]
print(ans)

import sys
from collections import defaultdict

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
N, *A = list(map(int, read().split()))
memo = defaultdict(int)  # 0で初期化する
answer = 0
for idx, x in enumerate(A, 1):  # indexを1から始める
    # i<jを満たしながらansを計算
    # idx = 1の時はansが増えることはない
    # idx = 2の時は、idx = 1の時の結果がmemoに記録されている
    # idx = 3の時は、idx=1,2の結果が記録されている
    # 以下同様
    answer += memo[idx - x]
    memo[idx + x] += 1
print(answer)

-# 雰囲気で書いたら通ってしまったがなんで通ったかわからん -# i<jという前提を無視しているのではと感じる -N = int(eval(input())) -A = list(map(int, input().split())) -# i<jとして、条件は j-i = A_i + A_j -# i + A_i = j - A_j -dict1 = {} -for i in range(1, N + 1): -    tmp = i + A[i - 1] -    if tmp not in dict1: -        dict1[tmp] = 1 -    else: -        dict1[tmp] += 1 -dict2 = {} -for i in range(1, N + 1): -    tmp = i - A[i - 1] -    if tmp not in dict2: -        dict2[tmp] = 1 -    else: -        dict2[tmp] += 1 -# print(dict1, dict2) -ans = 0 -for k, v in list(dict1.items()): -    if k in dict2: -        ans += v * dict2[k] -print(ans) +import sys +from collections import defaultdict + +read = sys.stdin.buffer.read +readline = sys.stdin.buffer.readline +readlines = sys.stdin.buffer.readlines +N, *A = list(map(int, read().split())) +memo = defaultdict(int)  # 0で初期化する +answer = 0 +for idx, x in enumerate(A, 1):  # indexを1から始める +    # i<jを満たしながらansを計算 +    # idx = 1の時はansが増えることはない +    # idx = 2の時は、idx = 1の時の結果がmemoに記録されている +    # idx = 3の時は、idx=1,2の結果が記録されている +    # 以下同様 +    answer += memo[idx - x] +    memo[idx + x] += 1 +print(answer)