구슬 정렬 (Bead Sort 또는 Gravity Sort)는 구슬을 지면에 수직인 막대에 끼운 뒤 떨어뜨리는 방식으로 양의 정수로 구성된 배열을 정렬하는 방법입니다. 이 방식을 컴퓨터에서 구현하기에는 공간 복잡도와 같은 면에서 많은 어려움이 있으나, 현실과 같은 물리적 모델에서 대략적으로 O(n)의 시간 복잡도를 보여준다고 알려져 있습니다. 구슬 정렬은 정확히 다음과 같은 방식으로 진행됩니다.
이러한 과정에 따라 구슬 정렬은 총 ∑_ia_i개의 구슬을 사용합니다. 양의 정수로 구성된 길이가 n인 배열 a가 주어집니다. a에 대해 구슬 정렬을 수행할 때, ∑_ia_i개의 구슬 모두에 대해 이동한 거리의 합에 해당하는 칸의 개수를 출력하세요. 단, 정답이 클 수 있으니 1,000,000,007로 나눈 나머지를 출력하세요.
첫 번째 줄에 배열의 길이 n (1≤n≤2×105)이 주어집니다.
두 번째 줄에 배열의 각 원소 a_1부터 a_n까지 총 n개의 양의 정수가 공백으로 분리되어 주어집니다. (0<a_i≤109)
문제의 정답을 한 줄에 출력하세요. 정답이 클 수 있으니 1,000,000,007로 나눈 나머지를 출력하세요.