#include <cstdio>
#define ll long long
void in(ll &x){
char c=getchar();
int f=0;
while(c<'0'||c>'9') f=(c=='-'),c=getchar();
for(x=0;c>='0'&&c<='9';c=getchar())
x=x*10+(c-'0');
if(f) x*=-1;
return;
}
ll v[1000005];
const ll mod=1e9+7;
ll two(ll x){
return (x*(x-1)/2)%mod;
}
ll mx(ll a,ll b){
return a>b?a:b;
}
int main(){
ll n,x,max=0;
in(n);
for(int i=1;i<=n;++i){
in(x);
++v[x];
max=mx(max,x);
}
ll ans=0;
for(int i=2;i<=max;++i)
if(v[i]>1){
ll k=two(v[i]);
for(int j=1;j<i/2;++j) if(v[j]&&v[i-j])ans=(ans+k*v[j]*v[i-j]%mod)%mod;
if(i%2==0) if(v[i/2]>1)ans=(ans+k*two(v[i/2]))%mod;
}
printf("%lld\n",ans);
return 0;
}