수열 (Hard)

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

문제

모든 원소가 양의 정수이고, 길이가 NN인 수열 A_1,A_2,...,A_NA\_1, A\_2, ..., A\_NMM이 주어질 때, 우리는 다음 조건을 만족하는 수열 B_1,B_2,,B_MB\_1, B\_2, \cdots, B\_M좋은 수열이라고 한다.

  • 수열의 길이는 MM이다.
  • 모든 원소는 11 이상 NN 이하의 정수이다.
  • 이 수열은 증가 수열이다. 즉 B_1<B_2<<B_MB\_1 < B\_2 < \cdots < B\_M 이다.
  • A_B_1,A_B_2,,A_B_MA\_{B\_1}, A\_{B\_2}, \cdots, A\_{B\_M}이 서로 다르다.

가능한 모든 좋은 수열 B_1,,B_MB\_1, \cdots, B\_M에 대해, A_B_1×A_B_2××A_B_MA\_{B\_1} \times A\_{B\_2} \times \cdots \times A\_{B\_M}의 합을 1,000,000,0071\\,000\\,000\\,007로 나눈 나머지를 구하시오.

입력

첫째 줄에 수열 AA의 길이 NN과 좋은 수열의 길이 MM이 공백으로 구분되어 주어진다.

둘째 줄에 수열 A_1,A_2,,A_NA\_1, A\_2, \cdots, A\_N이 공백으로 구분되어 주어진다.

출력

가능한 모든 좋은 수열 B_1,,B_MB\_1, \cdots, B\_M에 대해, A_B_1×A_B_2××A_B_MA\_{B\_1} \times A\_{B\_2} \times \cdots \times A\_{B\_M}의 합을 1,000,000,0071\\,000\\,000\\,007로 나눈 나머지를 출력한다.

제한

  • 1N1,0001 \le N \le 1\\, 000
  • 1M1 \le M
  • 1A_i100,0001 \le A\_i \le 100\\,000 (1iN1 \le i \le N)
  • MMAA에 존재하는 서로 다른 수의 개수보다 작거나 같다.

힌트

예제에서 주어진 수열 \[3,1,1,2]\[3, 1, 1, 2] 에는 두 개의 좋은 수열 \[1,2,4]\[1, 2, 4]\[1,3,4]\[1, 3, 4]가 존재한다. 출력해야 하는 답은 3×1×2+3×1×2=123 \times 1 \times 2 + 3 \times 1 \times 2 = 12이다.