#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;
}