Problem:
Score : 300 points

Problem Statement

Given are N integers A_1,\ldots,A_N.

Find the sum of A_i \times A_j over all pairs (i,j) such that 1\leq i < j \leq N, modulo (10^9+7).

Constraints

2 \leq N \leq 2\times 10^5

0 \leq A_i \leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1 \ldots A_N

Output

Print \sum_{i=1}^{N-1}\sum_{j=i+1}^{N} A_i A_j, modulo (10^9+7).

Sample Input 1

3
1 2 3

Sample Output 1

11

We have 1 \times 2 + 1 \times 3 + 2 \times 3 = 11.

Sample Input 2

4
141421356 17320508 22360679 244949

Sample Output 2

437235829

Solution in C (GCC 9.2.1) (judge verdict: Time Limit Exceeded)

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#define PI 3.141592653589793
#define MOD 1000000007
//#define DEBUG

//qsort用、昇順
int compare_int(const void *a, const void *b)
{
	return *(int*)a-*(int*)b;
}
//qsort(array, 10, sizeof(int), compare_int)

int n;
long long int sum, nisum;
long long int a[200100];
long long int nijyo[200100];

int main(){
	scanf("%d", &n);
	sum = 0;
	nisum = 0;
	for(int i=0; i<n; i++){
		scanf("%lld", &a[i]);
	}

	for(int i=0; i<n-1; i++){
		for(int j=i+1; j<n; j++){
			long long int tmp = a[i]*a[j];
			tmp = tmp%MOD;
			sum += tmp;
			sum = sum%MOD;
		}
	}


	printf("%lld", sum);
	
	return 0;
}