만드는 중입니다

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

RLE 역전 쌍 세기

시간 제한3초메모리 제한1024 MB

요약
M개의 블록을 각각 K번 반복해 차례로 이어 붙인 배열에서 A_i > A_j인 쌍 (i, j)의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 6점

유형
정렬, 세그먼트 트리, 조합론
정답자
아직 제출이 없습니다

문제

배열 AA가 있습니다. 처음에 AA는 빈 배열입니다. 다음 조작을 MM번 반복해서 배열 AA를 채웁니다.

  • KK와 정수열 B1,⋯ ,BNB_1, \cdots, B_N이 주어집니다. B1,B2,⋯ ,BNB_1, B_2, \cdots, B_N을 차례로 AA의 가장 뒤에 이어붙이는 것을 KK번 반복합니다.

이렇게 만들어진 배열 A1,A2,⋯ ,A∣A∣A_1, A_2, \cdots, A_{\lvert A \rvert}에서 다음 조건을 만족하는 정수쌍 (i,j)(i, j)의 개수를 출력하세요.

  • 1≤i<j≤∣A∣1 \le i < j \le \lvert A \rvert
  • Ai>AjA_i > A_j

입력

첫 줄에 조작의 횟수 MM이 주어집니다. (1≤M≤500 000)(1 \le M \le 500\,000)

다음부터 MM번의 조작에 관한 정보가 각각 두 줄로 차례대로 주어집니다.

각 조작의 첫 줄에는 반복 횟수 KK와 배열의 길이 NN이 공백으로 구분되어 주어집니다. (1≤K≤109;(1 \le K \le 10^9; 1≤N≤500 000)1 \le N \le 500\,000)

다음 줄에는 B1,B2,⋯ ,BNB_1, B_2, \cdots, B_N이 공백으로 구분되어 주어집니다. (1≤Bi≤109)(1 \le B_i \le 10^9)

입력에서 주어지는 모든 NN의 합은 500 000500\,000 이하입니다.

출력

조건을 만족하는 (i,j)(i, j) 정수쌍의 개수를 출력하세요. 개수가 매우 커질 수 있으므로 1 000 000 007(=109+7)1\,000\,000\,007 (= 10^9+7)로 나눈 나머지를 출력합니다. 1 000 000 0071\,000\,000\,007은 소수입니다.

예제2

  1. 예제 1

    입력
    2
    2 4
    3 1 4 1
    3 1
    5
    
    예상 출력
    11
    
  2. 예제 2

    입력
    3
    1 4
    1 5 9 2
    6 5
    3 5 8 9 7
    9 3
    2 3 8
    
    예상 출력
    887