#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int mx=2e5+3;
const ll MOD=1000000007;
ll state[5003],res[5003];
int C[5003][5003];
inline void solve()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int d;
cin>>d;
state[d]++;
}
for(int j=1;j<=5000;j++){
C[0][j]=1,C[j][j]=1;
for(int i=1;i<j;i++){
C[i][j]=(C[i][j-1]%MOD+C[i-1][j-1]%MOD)%MOD;
}
}
for(int i=1;i<=5000;i++){
if(state[i]>=2&&2*i<=5000){
res[2*i]+=((ll)C[2][state[i]]%MOD);
res[2*i]%=MOD;
}
for(int p=i+1;p<=5000;p++)
{
if(state[i]&&state[p]){
res[i+p]+=((state[i]%MOD)*(state[p]%MOD))%MOD;
res[i+p]%=MOD;
}
}
}
int ans=0;
for(int i=1;i<=5000;i++)
{
if(state[i]>=2)ans+=((res[i]%MOD)*(((ll)C[2][state[i]])%MOD))%MOD;
ans%=MOD;
}
cout<<ans;
}
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
solve();
return 0;
}
#4本地跑和洛谷机子完全不一样