지우개

서로 다른 위치에서 값이 모두 다른 세 수를 고르는 모든 경우의 곱을 합한 값을 1,000,000,007로 나눈 나머지를 구합니다.

보통6조합론수학배열아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

승현이는 남이 지우개를 훼손할까 걱정되어 지우개를 직접 만들기로 했다.

승현이는 자연수로 이루어진 수열 a1,a2,,ana_1, a_2, \dots, a_n을 하나 정한다. 이 수열에서 서로 다른 세 위치의 원소 aia_i, aja_j, aka_k를 골라 가로, 세로, 높이가 각각 그 값인 직육면체 지우개를 만들고, 이를 ijki-j-k 지우개라고 부른다. 단 승현이는 위로 길쭉한 지우개를 좋아하므로 ai<aj<aka_i < a_j < a_k를 만족해야 한다.

위 그림을 살펴보자. 승현이가 정한 수열을 a1=3a_1 = 3, a2=1a_2 = 1, a3=1a_3 = 1, a4=2a_4 = 2라고 하자. 1231-2-3 지우개는 3<1<13 < 1 < 1이 성립하지 않으므로 만들 수 없다. 반면 2412-4-1 지우개는 1<2<31 < 2 < 3이 성립하므로 만들 수 있다. 이 수열에서 만들 수 있는 지우개는 2412-4-1 지우개와 3413-4-1 지우개뿐이다.

승현이는 만들 수 있는 지우개의 부피를 모두 더하면 얼마인지 궁금해졌다. 지우개의 부피는 가로, 세로, 높이의 곱이다. 지우개를 쌓아 둘 창고를 설계하려면 이 값이 필요하니, 승현이를 도와주자.

입력

첫째 줄에 수열의 길이 nn이 주어진다. (1n100,0001 \le n \le 100{,}000)

둘째 줄에 a1,a2,,ana_1, a_2, \dots, a_n이 공백으로 구분되어 차례대로 주어진다. (1ai100,0001 \le a_i \le 100{,}000)

출력

첫째 줄에 만들 수 있는 모든 지우개의 부피의 합을 출력한다. 승현이는 프로그램이 제대로 도는지부터 확인하고 싶어 하므로, 1,000,000,0071{,}000{,}000{,}007 (109+710^9 + 7)로 나눈 나머지를 출력한다.

힌트

수열이 a1=3a_1 = 3, a2=1a_2 = 1, a3=1a_3 = 1, a4=2a_4 = 2인 경우를 보자. 만들 수 있는 지우개는 2412-4-1 지우개와 3413-4-1 지우개뿐이므로, 부피의 합은 a2a4a1+a3a4a1=1×2×3+1×2×3=12a_2 a_4 a_1 + a_3 a_4 a_1 = 1 \times 2 \times 3 + 1 \times 2 \times 3 = 12이다.