Bad Hair Day와 기댓값

시간 제한2초메모리 제한512 MB

요약
높이가 주어진 소 N마리를 모든 N!가지 순서로 세울 때 서로를 볼 수 있는 쌍 개수의 기댓값을 1e9+7로 나눈 나머지로 구한다.
난이도

보통10점 중 7점

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

문제

농부 존에게는 N마리의 소가 있다. 소들의 키는 다양하며, 두 마리의 소의 키가 서로 같을 수 있다.

자신의 헤어스타일이 마음에 들지 않았던 소들은 일렬로 서서 서로의 헤어스타일을 확인해 주려고 한다.

각 소는 자신의 오른쪽을 바라보면서 자신보다 키가 같거나 큰 소가 등장하기 전까지 나온 모든 소들의 헤어스타일을 확인할 수 있다. 더 정확하게는, 왼쪽에서 i번째에 서 있는 소의 키를 H'**i라 하면, i번째 소는 다음 조건을 만족할 때 (또한 그러할 때에만) j번째 소를 볼 수 있다.

  • i < j고, *H'*i > H'**j다.
  • i < k < j고, *H'*i ≤ H'**k를 만족하는 k가 존재하지 않는다.

소들이 N마리 있으므로, 그들이 일렬로 설 수 있는 방법은 총 N!가지다. 농부 존은 서로 헤어스타일을 확인할 수 있는 소 쌍의 수의 기댓값이 궁금해졌다. 농부 존을 도와 이 기댓값을 출력하는 프로그램을 작성하시오.

입력

첫 번째 줄에 소의 수를 나타내는 자연수 N이 주어진다.

두 번째 줄에 N마리의 소의 키를 나타내는 N개의 자연수 H1, ..., HN가 사이에 공백을 두고 주어진다.

출력

서로소이고 음이 아닌 두 정수 PP, QQ가 존재하여, 헤어스타일을 확인할 수 있는 소 쌍의 수의 기댓값이 PQ\displaystyle \frac{P}{Q}와 같다고 하자. 이때, P≡QX(mod109+7)P \equiv QX \pmod{10^{9} + 7}를 만족하는 0 이상 (109+7)(10^{9} + 7) 미만의 정수 XX를 구하여 첫 번째 줄에 출력한다.

조건을 만족하는 PP, QQ, XX는 반드시 존재한다. 또한 XX는 유일하게 존재함이 보장된다.

제한

모든 입력 데이터는 다음 조건을 만족한다.

  • 1 ≤ N ≤ 2 × 105
  • 1 ≤ Hi ≤ 109 (1 ≤ i ≤ N)

예제2

  1. 예제 1

    입력
    4
    1 1 2 2
    
    예상 출력
    333333337
    
  2. 예제 2

    입력
    4
    10 20 30 40
    
    예상 출력
    416666672