#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
const int N = 1e5+10,mod = 1e9+7;
int n;
int num[N];
int res[5000][5];
int C(int a,int b = 2){
if(b==0||b==a) return 1;
if(res[a][b]!=0) return res[a][b];
return res[a][b] = (res[a-1][b]+res[a-1][b-1])%mod;
}
int main(){
cin>>n;
unordered_map<int,int> m;
int ans = 0;
int maxlen = 0;
for(int i = 1;i<=n;++i){
cin>>num[i];
maxlen = max(maxlen,num[i]);
m[num[i]]++;
}
for(int i = 1;i<=maxlen;++i){
for(int j = i;j<=maxlen;++j){
if(i==j){
ans+=(C(m[i])*C(m[i+j]))%mod;
}
else{
ans+=((m[i]*m[j])%mod*C(m[i+j]))%mod;
}
}
}
cout<<ans;
return 0;
}