만드는 중입니다

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

쿼리는 락이 아니다

면접 대비

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

요약
문자열의 한 글자를 바꾸는 연산과 구간 질의가 주어질 때, 구간에서 ROCK과 같은 부분수열의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 5점

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

문제

나락도 락이고, 부모님께 온 연락도 락이고, 오락가락?도 락?이지만?, 아쉽게도 쿼리는 락이 아니다.

알파벳 대문자로 이루어진 길이 NN의 문자열 S=s1s2…sNS=s_1 s_2 \ldots s_N이 주어진다. 이때, 다음과 같은 쿼리를 QQ번 처리해야 한다.

  • 11 idxidx cc: sidxs_{idx}를 cc로 변경한다. (1≤idx≤N, c(1 \leq idx \leq N,\ c는 알파벳 대문자))
  • 22 ll rr: slsl+1…srs_l s_{l+1} \ldots s_r의 부분열 중 ROCK으로 끝나는 문자열의 개수를 출력한다. 단, 수가 매우 클 수 있으니 109+710^9+7로 나눈 나머지를 출력한다. (1≤l≤r≤N)(1 \leq l \leq r \leq N)

입력

첫 번째 줄에 문자열 SS의 길이 NN이 주어진다. (4≤N≤250000)(4 \leq N \leq 250000)

두 번째 줄에 알파벳 대문자로만 이루어진 문자열 SS가 주어진다.

세 번째 줄에 쿼리의 개수 QQ가 주어진다. (1≤Q≤250000)(1 \leq Q \leq 250000)

네 번째 줄부터 QQ개의 줄에 걸쳐 쿼리가 주어진다. 가장 마지막으로 주어지는 쿼리는 22번 쿼리이다.

출력

22번 쿼리에 대해 정답을 한 줄에 하나씩 출력한다.

힌트

문자열의 부분열이란 문자열에서 00개 이상의 문자를 지운 문자열을 의미한다. 예를 들어, aan은 hanyang의 부분열이다.

예제1

  1. 예제 1

    입력
    6
    NAROCK
    3
    2 1 6
    1 3 C
    2 2 5
    
    예상 출력
    4
    0