#include <iostream>
#include <unordered_set>
using namespace std;
unordered_multiset<int> S;
inline int C2(int x)
{
return x * (x - 1) / 2;
}
int main()
{
cin.sync_with_stdio(false);
int n, a, M = 0;
cin >> n;
while (n--)
cin >> a, S.insert(a), M = max(M, a);
long long ans = 0;
for (int i = 1; i < M; i++)
{
for (int j = i; j <= M - i; j++)
if (i != j)
ans += S.count(i) * S.count(j) * C2(S.count(i + j));
else
ans += C2(S.count(i)) * C2(S.count(i * 2));
ans %= 1000000007;
}
cout << ans << flush;
return 0;
}