Problem M: 排序接近有序的序列

Problem M: 排序接近有序的序列

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 512 MiB

Description

现有一个长为n(1<=n<=5*106)的正整数构成的升序序列,将其中不超过5对数字进行交换后得到一个打乱后的序列。
输入该打乱后的序列,请你将该打乱后的序列还原为升序序列,而后求出第1个数乘以1加上第2个数乘以2,。。。,加上第n个数乘以n的和。也就是说,如果原升序序列第i个数为$a_i$,该题求$\Sigma_{i=1}^n i\cdot a_i$,结果对1000000007取模。

Input

第一行:输入n,(1<=n<=5*106)
第二行:输入n个正整数,每个数a满足1<=a<=109, 该序列为按照要求打乱后的序列

Output

一个整数,是题目要求的结果

Sample 1 Input

3
3 2 1

Sample 1 Output

14
还原后数字序列为1 2 3,求出结果为(1*1+2*2+3*3) mod 1000000007 = 14

Sample 2 Input

5
10 6 4 8 2

Sample 2 Output

110

HINT

思考对于接近有序的序列,哪种排序算法的时间复杂度较低?