#include<bits/stdc++.h>
using namespace std;
using ll=long long;
using ull=unsigned long long;
using i128=__int128_t;
using u128=__uint128_t;
using ld=long double;
map<int,int>m;
ll A(int x,int y)//排列
{
ll sum=1;
while(y--)
{
sum*=x;
x--;
}
return sum;
}
ll C(int x,int y)//组合
{
return A(x,y)/A(y,y);
}
void solve()
{
int n;
cin >> n;
vector<int>v(n+1,0);
for(int i=1;i<=n;i++)//转换一下式子 其实等价于aj-j=ai-i 我们可以算出每个vi-i
{
cin >> v[i];
v[i]-=i;
m[v[i]]++;
}
ll ans=0;
for(auto it=m.begin();it!=m.end();it++)//利用map可以知道每种vi-i有多少个 通过基础的组合数学 可以算出方案数
{
if(it->second>=2)
{
ans+=C(it->second,2);//n个里面挑两个 就是这一组的下标对数量
}
}
cout << ans;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t=1;
//cin >> t;
while(t--)
{
solve();
}
return 0;
}