#include <bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
const int maxn=1e3+5;
long long arr[maxn];
long long quick_pow(long long x,long long n)//带余数的快速幂
{
long long res=1;
while(n)
{
if(n&1)
{
res*=x;
res%=mod;
}
n>>=1;
x*=x;
x%=mod;
}
return res;
}
long long cal_mul(int i,int n)//计算连乘
{
long long mul=1;
for(int j=0;j<n;j++)
{
if(j!=i)
{
mul*=(((arr[j]*arr[j])%mod)-(arr[i]*arr[i])%mod+mod)%mod;//注意相减之后要加上mod防止出现负数
mul%=mod;
}
}
return mul;
}
int main()
{
long long n;
while(cin>>n)
{
long long ans=0;
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
for(int i=0;i<n;i++)
{
ans+=quick_pow((((2*arr[i])%mod)*cal_mul(i,n))%mod,mod-2);// ans+=qi^(mod-2)费马小定理( a^(q-2)=a^(-1) )
ans%=mod;
}
cout<<ans<<endl;
}
}
using namespace std;
const int mod=1e9+7;
const int maxn=1e3+5;
long long arr[maxn];
long long quick_pow(long long x,long long n)//带余数的快速幂
{
long long res=1;
while(n)
{
if(n&1)
{
res*=x;
res%=mod;
}
n>>=1;
x*=x;
x%=mod;
}
return res;
}
long long cal_mul(int i,int n)//计算连乘
{
long long mul=1;
for(int j=0;j<n;j++)
{
if(j!=i)
{
mul*=(((arr[j]*arr[j])%mod)-(arr[i]*arr[i])%mod+mod)%mod;//注意相减之后要加上mod防止出现负数
mul%=mod;
}
}
return mul;
}
int main()
{
long long n;
while(cin>>n)
{
long long ans=0;
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
for(int i=0;i<n;i++)
{
ans+=quick_pow((((2*arr[i])%mod)*cal_mul(i,n))%mod,mod-2);// ans+=qi^(mod-2)费马小定理( a^(q-2)=a^(-1) )
ans%=mod;
}
cout<<ans<<endl;
}
}