만드는 중입니다

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

비석 읽어내기

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

요약
문자열의 구간이 바뀔 때마다 길이 5 이하의 이름과 같은 부분수열의 개수를 10^9+7로 나눈 나머지로 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 세그먼트 트리, 문자열
정답자
아직 제출이 없습니다

문제

고대 유적을 발굴하던 성원이가 커다란 비석을 찾아냈다. 학계에 보고하려고 비석에 새겨진 글을 해독하는 중인데, 오랜 세월을 지나며 글자가 지워져 잘 보이지 않는다.

비석을 세우던 시절 사람들은 비석에 왕의 이름을 새겨 넣기를 좋아했다. 비석의 글자 중 일부를 골라(연속하지 않아도 된다) 순서대로 이었을 때 왕의 이름이 되는 경우의 수가 많을수록 좋은 비석으로 쳤다. 또 말을 길게 하는 것을 싫어해서 왕의 이름은 언제나 5글자 이내였다.

연대 측정으로 비석이 묻히던 당시의 왕 이름을 알아낸 성원이는, 이 비석에서 왕의 이름을 읽어낼 수 있는 경우의 수가 몇 가지인지 알고 싶다. 글씨가 흐릿해서 연구가 진행되면 비석 일부의 해석이 바뀌고, 해석이 바뀔 때마다 경우의 수를 다시 알고 싶어 한다. 성원이를 도와 경우의 수를 계산하는 프로그램을 작성하자.

입력

첫 줄에 테스트 케이스의 수 TT (1≤T≤101 \le T \le 10)가 주어진다.

각 테스트 케이스의 첫 줄에는 비석의 글자 수 NN (1≤N≤2000001 \le N \le 200000), 왕 이름의 길이 MM (1≤M≤51 \le M \le 5), 비석의 해석이 바뀌는 횟수 QQ (0≤Q≤1000000 \le Q \le 100000)가 주어진다. 둘째 줄에는 비석에 적힌 글의 첫 번째 해석이 문자열 하나로 주어지며, 영어 대문자로만 이루어져 있다. 셋째 줄에는 왕의 이름이 문자열 하나로 주어지고, 역시 영어 대문자로만 이루어져 있다.

이어지는 QQ개의 줄에는 한 줄마다 두 정수 AiA_i, BiB_i와 문자열 SiS_i가 주어진다 (1≤Ai≤Bi≤N1 \le A_i \le B_i \le N, SiS_i의 길이는 Bi−Ai+1B_i - A_i + 1). 비석의 AiA_i번째 글자부터 BiB_i번째 글자까지의 해석이 SiS_i로 바뀐다는 뜻이다. SiS_i도 영어 대문자로만 이루어져 있고, 모든 테스트 케이스에 걸친 SiS_i의 길이 합은 2000000 이하이다.

출력

각 테스트 케이스마다 Q+1Q + 1개의 줄에 한 줄에 하나의 정수를 출력한다. ii번째 줄에는 비석의 ii번째 해석에서 왕의 이름을 읽어낼 수 있는 경우의 수를 출력한다. 답이 커질 수 있으므로 1000000007로 나눈 나머지를 출력한다.

예제6

  1. 예제 1

    입력
    1
    20 5 1
    MIDASMIDASMIDASMIDAS
    MIDAS
    2 19 MMMIIIIDDDDAAAASSS
    
    예상 출력
    56
    1024
    
  2. 예제 2

    입력
    1
    1 1 0
    A
    A
    
    예상 출력
    1
    
  3. 예제 3

    입력
    1
    3 5 2
    ABC
    ABCDE
    1 3 EDC
    2 2 B
    
    예상 출력
    0
    0
    0
    
  4. 예제 4

    입력
    1
    10 1 3
    AABBAABBAA
    A
    1 10 BBBBBBBBBB
    3 7 AAAAA
    1 1 A
    
    예상 출력
    6
    0
    5
    6
    
  5. 예제 5

    입력
    1
    200 5 2
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAA
    1 200 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB
    1 1 B
    
    예상 출력
    535650026
    472258775
    410141720
    
  6. 예제 6

    입력
    3
    5 2 2
    ABABA
    AB
    1 5 BBBBB
    1 5 ABABA
    1 5 0
    Z
    ZZZZZ
    6 3 2
    XYZXYZ
    XYZ
    4 6 XYZ
    1 3 ZYX
    
    예상 출력
    3
    0
    3
    0
    4
    4
    2