배열 구간합 놀이

아직 제출이 없습니다시간 제한1.5초메모리 제한512 MB

문제

Alice는 정수 배열을 이용한 구간합 놀이를 즐겨하는데, 아래와 같은 순서로 게임을 진행한다.

  • 먼저, 길이 nn인 정수 배열 AA를 만든다. AA의 원소가 A\[1]A\[1], \dots, A\[n]A\[n]이라 했을 때 이 nn개의 값은 모두 달라야 한다.
  • 다음으로, 배열 AA의 구간을 나타내는 mm개의 정수 쌍 (x\[1],y\[1])(x\[1], y\[1]), \dots, (x\[m],y\[m])(x\[m], y\[m])을 고른다. 이 때 1x\[i]y\[i]n1 ≤ x\[i] ≤ y\[i] ≤ n 을 만족해야한다.
  • 배열 AAxx, yy를 이용하여 구간합 S(A,x,y)S(A, x, y)을 다음과 같이 정의한다: S(A,x,y):=_1jm(_x\[j]iy\[j]A\[i])S(A, x, y) := \sum\_{1 \le j \le m} ( \sum\_{x\[j] \le i \le y\[j]} A\[i] )
  • 이 게임의 목표는 배열 AA의 원소를 임의로 재배열하여 S(A,x,y)S(A, x, y)값을 최대로 만드는 것이다. AA의 원소가 nn개이므로 총 n!n! 가지의 방법으로 AA의 원소를 재배열할 수 있다.

예를 들어, n=3n = 3, m=2m = 2, A=\[10,100,1000]A = \[10, 100, 1000] 이고 x=\[1,2]x = \[1, 2], y=\[2,2]y = \[2, 2]라 하자. n=3n = 3 이므로 AA의 원소를 재배열하여 얻을 수 있는 배열은 총 여섯 종류가 있다. 원래의 배열 AA와 구분하기 위해 이를 배열 BB라 하자.

  • B=\[10,100,1000]B = \[10, 100, 1000] 일 때, S(B,x,y)=(10+100)+(100)=210S(B, x, y) = (10 + 100) + (100) = 210.
  • B=\[10,1000,100]B = \[10, 1000, 100] 일 때, S(B,x,y)=(10+1000)+(1000)=2010S(B, x, y) = (10 + 1000) + (1000) = 2010.
  • B=\[100,10,1000]B = \[100, 10, 1000] 일 때, S(B,x,y)=(100+10)+(10)=120S(B, x, y) = (100 + 10) + (10) = 120.
  • B=\[100,1000,10]B = \[100, 1000, 10] 일 때, S(B,x,y)=(100+1000)+(1000)=2100S(B, x, y) = (100 + 1000) + (1000) = 2100.
  • B=\[1000,10,100]B = \[1000, 10, 100] 일 때, S(B,x,y)=(1000+10)+(10)=1020S(B, x, y) = (1000 + 10) + (10) = 1020.
  • B=\[1000,100,10]B = \[1000, 100, 10] 일 때, S(B,x,y)=(1000+100)+(100)=1200S(B, x, y) = (1000 + 100) + (100) = 1200.

이 경우 S(A,x,y)S(A, x, y)의 최댓값은 21002100이며, 네 번째 경우인 B=\[100,1000,10]B = \[100, 1000, 10]를 통해 얻을 수 있다.

다른 예로, n=2n = 2, m=1m = 1, A=\[20,22]A = \[20, 22] 이고 x=\[1]x = \[1], y=\[2]y = \[2]라 하자. n=2n = 2 이므로 AA의 원소를 재배열하여 얻을 수 있는 배열은 총 두 종류가 있다. 원래의 배열 AA와 구분하기 위해 이를 배열 BB라 하자.

  • B=\[20,22]B = \[20, 22] 일 때, S(B,x,y)=(20+22)=42S(B, x, y) = (20 + 22) = 42.
  • B=\[22,20]B = \[22, 20] 일 때, S(B,x,y)=(22+20)=42S(B, x, y) = (22 + 20) = 42.

이 경우 S(A,x,y)S(A, x, y)의 최댓값은 4242이며, 두 가지 다른 방법을 통해 얻을 수 있다.

AA, xx, yy가 주어졌을 때 Alice가 AA의 원소를 재배열하여 달성할 수 있는 S(A,x,y)S(A, x, y)의 최댓값을 구하고, 몇 가지 다른 방법으로 최댓값을 달성할 수 있는지 구해보자.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스의 입력 첫 줄에 nn, mm이 공백으로 구분되어 주어진다. 둘째 줄에는 배열 AA의 원소 nn개가 공백으로 구분되어 주어진다. 다음 mm줄에 걸쳐 각 줄에 두 개의 정수 x\[i]x\[i]y\[i]y\[i]가 공백으로 구분되어 주어진다.

출력

각 테스트 케이스의 정답인 Alice가 달성할 수 있는 S(A,x,y)S(A, x, y)의 최댓값, 그리고 이를 달성할 수 있는 방법의 수를 공백으로 구분하여 출력한다. 단, 방법의 수가 매우 커질 수 있으므로 109+710^9+7로 나눈 나머지를 출력한다.

제한

  • 1T101 ≤ T ≤ 10
  • 1n50,0001 ≤ n ≤ 50\\,000
  • 1m200,0001 ≤ m ≤ 200\\,000
  • 1A1 ≤ A의 원소 108≤ 10^8
  • 배열 AA의 원소는 고유하다
  • 1im1 ≤ i ≤ m인 정수 ii에 대하여 1x\[i]y\[i]n1 ≤ x\[i] ≤ y\[i] ≤ n