#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
const int M = int(pow(10,9) + 7 );
int n;
int arr[5050];
int ans;
vector<int> num;
bool isFlag(){
sort(num.begin(), num.end());
if (num[0]+num[1] == num[2]
&& num[2] == num[3]){
return true;
}
return false;
}
void dfs(int step){
if (num.size() == 4){
if (isFlag()) ans++;
return;
}
for(int i=step; i<n; i++){
num.push_back(arr[i]);
dfs(i+1);
num.pop_back();
}
}
int main(){
cin >> n;
for(int i=0; i<n; i++){
cin >> arr[i];
}
sort(arr, arr+n);
dfs(0);
cout << ans % M;
return 0;
}