#include <bits/stdc++.h>
using namespace std;
long long s=0;
int n,a[114514],b[5],c[1145];
int dfs(int w,int ss,int la)
{
if(w==5)
{
if(ss%3&&(
b[1]!=b[2]&&b[1]!=b[3]&&
b[1]!=b[4]&&b[2]!=b[3]&&
b[2]!=b[4]&&b[3]!=b[4]))return 0;
if( (b[1]+b[2]==b[3]&&b[1]+b[2]==b[4])||
(b[2]+b[3]==b[1]&&b[2]+b[3]==b[4])||
(b[3]+b[4]==b[1]&&b[3]+b[4]==b[2])||
(b[1]+b[3]==b[2]&&b[1]+b[3]==b[4])||
(b[2]+b[4]==b[1]&&b[2]+b[4]==b[3])||
(b[1]+b[4]==b[2]&&b[1]+b[4]==b[3]))
{
s++;return 0;
}
}
for(int i=la+1;i<=n;i++)
{
if(c[i]==0)
{
c[i]=1;
b[w]=a[i];
dfs(w+1,ss+a[i],i);
c[i]=0;
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
dfs(1,0,0);
cout<<s%1000000007;
return 0;
}
无奖找错误www