#include <iostream>
#include <algorithm>
#include <set>
#include <map>
using namespace std;
const int mod=1e9+7;
int T;
set<int>f;
set<int>S;
int a;
bool vs[50005];
int b[5005];
int c[5005][5005];
inline void build()
{
c[0][0]=1;
c[1][0]=c[1][1]=1;
for(int i=2;i<=5000;i++)
{
c[i][0]=1;
for(int j=1;j<=5000;j++)
{
c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;
}
}
}
int main() {
scanf("%d",&T);
build();
for(int i=1;i<=T;i++){
scanf("%d",&a);
b[a]++;
if(f.find(a)==f.end()){
f.insert(a);
}
else{
if(!vs[a])S.insert(a);
vs[a]=true;
}
}
long long ans=0;
for(auto i:S){
if(i%2||i<2||b[i]<2||(!(i>>1))||b[i>>1]<2)continue;
ans=(ans+c[b[i]][2]%mod*c[b[i>>1]][2]%mod)%mod;
}
printf("%lld",ans);
return 0;
}