만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

지우개

시간 제한1초메모리 제한256 MB

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

보통10점 중 6점

유형
조합론, 수학, 배열
정답자
아직 제출이 없습니다

문제

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

승현이는 자연수로 이루어진 수열 a1,a2,…,ana_1, a_2, \dots, a_n을 하나 정한다. 이 수열에서 서로 다른 세 위치의 원소 aia_i, aja_j, aka_k를 골라 가로, 세로, 높이가 각각 그 값인 직육면체 지우개를 만들고, 이를 i−j−ki-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라고 하자. 1−2−31-2-3 지우개는 3<1<13 < 1 < 1이 성립하지 않으므로 만들 수 없다. 반면 2−4−12-4-1 지우개는 1<2<31 < 2 < 3이 성립하므로 만들 수 있다. 이 수열에서 만들 수 있는 지우개는 2−4−12-4-1 지우개와 3−4−13-4-1 지우개뿐이다.

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

입력

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

둘째 줄에 a1,a2,…,ana_1, a_2, \dots, a_n이 공백으로 구분되어 차례대로 주어진다. (1≤ai≤100,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인 경우를 보자. 만들 수 있는 지우개는 2−4−12-4-1 지우개와 3−4−13-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이다.

예제3

  1. 예제 1

    입력
    4
    3 1 1 2
    
    예상 출력
    12
    
  2. 예제 2

    입력
    1
    5
    
    예상 출력
    0
    
  3. 예제 3

    입력
    3
    1 2 3
    
    예상 출력
    6