만드는 중입니다

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

생성기

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

요약
무작위로 1부터 m까지의 수를 뽑을 때, 주어진 n개의 길이 L 수열이 각각 연속된 구간으로 모두 나타날 때까지의 기댓값을 구합니다.
난이도

어려움10점 중 9점

유형
확률, 문자열 매칭, 비트 연산, 동적 계획법
정답자
아직 제출이 없습니다

문제

nn개의 서로 다른 정수 수열이 주어진다. 모든 수열의 길이는 LL로 같고, 수열에 들어 있는 모든 정수는 1 이상 mm 이하이다.

기계는 난수를 생성하여 스트림에 붙이는 장치이다. 처음에 스트림은 비어 있다. 기계는 매초 1 이상 mm 이하의 정수 하나를 무작위로 생성해 스트림 뒤에 붙인다. 각 난수는 주어진 확률 분포에 따라 서로 독립적으로 생성된다.

확률 1로, 결국 주어진 nn개의 수열이 각각 스트림에서 연속한 LL개의 원소로 한 번 이상 나타난다. 서로 다른 수열의 등장 위치는 겹칠 수 있다. 주어진 nn개의 수열이 모두 적어도 한 번씩 나타난 순간, 기계는 즉시 멈춘다. 기계가 멈출 때까지 걸린 초의 기댓값을 구하라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 첫 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스의 첫 줄에는 양의 정수 nn, mm, LL이 주어진다. 각각 수열의 개수, 수열과 스트림에 나올 수 있는 정수의 상한, 각 수열의 길이이다 (1≤n≤151 \le n \le 15, 1≤m≤1001 \le m \le 100, 1≤L≤5⋅1041 \le L \le 5 \cdot 10^4).

다음 줄에는 기계가 사용하는 확률 분포를 나타내는 양의 정수 a1,a2,…,ama_1, a_2, \ldots, a_m이 mm개 주어진다. 기계는 확률 a1/sa_1 / s로 1을, 확률 a2/sa_2 / s로 2를 생성하며, 이런 식으로 이어진다. 여기서 s=a1+a2+…+ams = a_1 + a_2 + \ldots + a_m이다. s≤109s \le 10^9임이 보장된다.

다음 nn개의 줄에는 길이 LL의 정수 수열이 각각 주어진다. 이 수열의 모든 정수는 양의 정수이며 mm을 넘지 않는다. 주어진 nn개의 수열은 모두 서로 다르다고 보장된다.

모든 테스트 케이스에 대해 n⋅Ln \cdot L의 총합은 777 777777\,777을 넘지 않는다.

출력

각 테스트 케이스에 대해 답을 기약분수 AB\frac{A}{B}로 구한 뒤, (A⋅B−1) mod (109+7)(A \cdot B^{-1}) \bmod (10^{9} + 7)의 값을 한 줄에 출력한다. 여기서 B−1B^{-1}은 109+710^{9} + 7을 법으로 하는 BB의 곱셈 역원이다.

모든 입력에 대해 BB와 109+710^{9} + 7은 서로소임이 보장된다.

예제1

  1. 예제 1

    입력
    1
    1 2 2
    1 1
    1 1
    
    예상 출력
    6