import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
public class Main{
static int arr[] = new int[100004];
static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
static int count = 0;
static int l = 1000000007;
static int max = 0;
public static void main(String[] args) throws IOException{
int n = nextInt();
for(int i = 1;i <= n;i++) {
int number = nextInt();
if(number > max) {
max = number;
}
arr[number]++;
}
for(int i = 2;i <= max;i++) {
if(arr[i] >= 2) {
for(int j = 0;j <= i / 2;j++) {
int number = i - j;
if(j == number && arr[j] >= 2) {
int nums1 = method(arr[i]);
int nums2 = method(arr[j]);
count = (count + (nums1 * nums2)) % l;
}else if(arr[number] >= 1 && arr[j] >= 1) {
int nums1 = method(arr[i]);
count = (count + (nums1 * (arr[number] % l) * (arr[j] % l))) % l;
}
}
}
}
System.out.println(count);
}
public static int method(int n) {
return (n * (n - 1) / 2) % l;
}
public static int nextInt() throws IOException {
in.nextToken();
return (int)in.nval;
}
}