/**
* For the solution i have approached as follows for eg:
* we have given array a=[4,3,2]
* so if we see the permutation we would get as such:
*
* 4*4
* 4*3+3*3
* 3*3
* 3*2+2*2
* 4*2+3*2+2*2
* 2*2
*
* we will arrange in such a way that how many times 4 will repeat ,how many times 3 will repeat and so on
* so we would get something like this
*
* 4(4)+3(4+3+3)+2(4+3+3+2+2+2)
* on further solving we will get
* 4(1*4)+3(1*4+2*3)+2(1*4+2*3+3*2)
*
*
*
* so i have created two arrays one which will contain the original elements 4,3,2 named input1
* and another array named arr which will keep the counts of 4,3,2
* then we will multiply the elements of arr and input1 and add it to get the output
*
*
*
*/
import java.util.*;
class Ideone {
public static long answer=0;
public static int longvalue=1000000007;
public static void main
(String args
[]) {
Scanner s
=new Scanner
(System.
in); int n=s.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++)
a[i]=s.nextInt();
long start
=System.
currentTimeMillis(); int output=possibleways(a);
long stop
=System.
currentTimeMillis(); System.
out.
println(stop
-start
); }
private static int possibleways(int[] input1) {
long[] arr=new long[input1.length];
arr[0]=input1[0];
answer=0;
for(int i=1;i<input1.length;i++)
{
int temp=((i+1)*input1[i]);
arr[i]=arr[i-1]+temp;
}
for(int i=0;i<arr.length;i++)
{
long temp=(input1[i]*arr[i]);
answer=(answer+temp)%longvalue;
}
return (int)answer%longvalue;
}
}
LyoqCiAqIEZvciB0aGUgc29sdXRpb24gaSBoYXZlIGFwcHJvYWNoZWQgYXMgZm9sbG93cyBmb3IgZWc6CiAqIHdlIGhhdmUgZ2l2ZW4gYXJyYXkgYT1bNCwzLDJdCiAqIHNvIGlmIHdlIHNlZSB0aGUgcGVybXV0YXRpb24gd2Ugd291bGQgZ2V0IGFzIHN1Y2g6CiAqCiAqIDQqNAogKiA0KjMrMyozCiAqIDMqMwogKiAzKjIrMioyCiAqIDQqMiszKjIrMioyCiAqIDIqMgogKgogKiB3ZSB3aWxsIGFycmFuZ2UgaW4gc3VjaCBhIHdheSB0aGF0IGhvdyBtYW55IHRpbWVzIDQgd2lsbCByZXBlYXQgLGhvdyBtYW55IHRpbWVzIDMgd2lsbCByZXBlYXQgYW5kIHNvIG9uCiAqIHNvIHdlIHdvdWxkIGdldCBzb21ldGhpbmcgbGlrZSB0aGlzCiAqCiAqIDQoNCkrMyg0KzMrMykrMig0KzMrMysyKzIrMikKICogb24gZnVydGhlciBzb2x2aW5nIHdlIHdpbGwgZ2V0CiAqIDQoMSo0KSszKDEqNCsyKjMpKzIoMSo0KzIqMyszKjIpCiAqCiAqCiAqCiAqIHNvIGkgaGF2ZSBjcmVhdGVkIHR3byBhcnJheXMgb25lIHdoaWNoIHdpbGwgY29udGFpbiB0aGUgb3JpZ2luYWwgZWxlbWVudHMgNCwzLDIgbmFtZWQgaW5wdXQxCiAqIGFuZCBhbm90aGVyIGFycmF5IG5hbWVkIGFyciB3aGljaCB3aWxsIGtlZXAgdGhlIGNvdW50cyBvZiA0LDMsMgogKiB0aGVuIHdlIHdpbGwgbXVsdGlwbHkgdGhlIGVsZW1lbnRzIG9mIGFyciBhbmQgaW5wdXQxIGFuZCBhZGQgaXQgdG8gZ2V0IHRoZSBvdXRwdXQKICoKICoKICoKCiAqLwogaW1wb3J0IGphdmEudXRpbC4qOwogY2xhc3MgSWRlb25lIHsKICAgIHB1YmxpYyBzdGF0aWMgbG9uZyBhbnN3ZXI9MDsKICAgIHB1YmxpYyBzdGF0aWMgaW50IGxvbmd2YWx1ZT0xMDAwMDAwMDA3OwogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkKICAgIHsKICAgICAgICBTY2FubmVyIHM9bmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICBpbnQgbj1zLm5leHRJbnQoKTsKICAgICAgICBpbnQgYVtdPW5ldyBpbnRbbl07CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgYVtpXT1zLm5leHRJbnQoKTsKICAgICAgICBsb25nIHN0YXJ0PVN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwogICAgICAgIGludCBvdXRwdXQ9cG9zc2libGV3YXlzKGEpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihvdXRwdXQpOwogICAgICAgIGxvbmcgc3RvcD1TeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc3RvcC1zdGFydCk7CiAgICB9CiAgICBwcml2YXRlIHN0YXRpYyBpbnQgcG9zc2libGV3YXlzKGludFtdIGlucHV0MSkgewogICAgICAgIGxvbmdbXSBhcnI9bmV3IGxvbmdbaW5wdXQxLmxlbmd0aF07CiAgICAgICAgYXJyWzBdPWlucHV0MVswXTsKICAgICAgICBhbnN3ZXI9MDsKICAgICAgICBmb3IoaW50IGk9MTtpPGlucHV0MS5sZW5ndGg7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRlbXA9KChpKzEpKmlucHV0MVtpXSk7CiAgICAgICAgICAgIGFycltpXT1hcnJbaS0xXSt0ZW1wOwoKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTA7aTxhcnIubGVuZ3RoO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGxvbmcgdGVtcD0oaW5wdXQxW2ldKmFycltpXSk7CiAgICAgICAgICAgIGFuc3dlcj0oYW5zd2VyK3RlbXApJWxvbmd2YWx1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAoaW50KWFuc3dlciVsb25ndmFsdWU7CiAgICB9Cgp9Cg==