#include <bits/stdc++.h>
using namespace std;
int a[1000010],b[50100][3],c[1000010];
bool cpm(int a,int b) {
return a>b;
}
int Mutp(int a) {
return a*(a-1)/2;
}
int main() {
int m,j,i,k;
int dif,Num=0;
cin>>m;
for( i=0; i<m; i++) {
cin>>a[i];
c[a[i]]++;
}
sort(a,a+m,cpm);
j=0;
b[0][0]=a[0];
for(i=0; i<m; i++) {
if(i>=1&&a[i-1]!=a[i])b[++j][0]=a[i];
b[j][1]++;
}
for(i=0; i<=j-1; i++) {
b[i][2]=b[i][0]-b[i+1][0];
}
for(i=0; i<=j; i++) {
dif=0;
if(b[i][1]>=2) {
{
for(k=i; k<=(j-i-1)/2+i; k++) {
dif+=b[k][2];
if(c[dif]) {
if(dif==b[k+1][0])Num+=Mutp(b[i][1])*Mutp(c[dif]);
else Num+=b[k+1][1]*c[dif]*Mutp(b[i][1]);
Num=Num%1000000007;
}
}
}
}
}
Num=Num%1000000007;
cout<<Num;
return 0;
}
------------
****如上,不知道为什么前三个小数据过不去QAQ****