아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

금고

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

요약
다이얼을 정확히 R번 돌려 목표 숫자 k를 맨 위에 남기는 순서 있는 회전 수열 개수를 1000033으로 나눈 나머지를 구합니다.
난이도

어려움10점 중 8점

유형
행렬, 동적 계획법, 조합론
정답자
아직 제출이 없습니다

문제

요즘은 밖에 그냥 놓아둔 것이라면 무엇도 안전하지 않다. 헥토르(Hektor)가 모은 우케몬 카드 컬렉션도 예외가 아니다. 내일 사촌 동생 올렉(Olek)이 놀러 오기 때문이다. 오랫동안 모아 온 컬렉션을 방문 기간 동안 위험에 노출시키지 않으려고, 헥토르는 이번 기회에 맞춰 금고를 하나 사서 카드를 그 안에 넣고 잠갔다.

금고의 자물쇠는 둥근 다이얼이다. 다이얼에는 11부터 NN까지의 수가 시계 방향으로 적혀 있고, 맨 위에는 11이 놓여 있다. 다이얼은 미리 정해진 MM가지 방법으로만 돌릴 수 있으며, 각 방법은 정해진 칸 수만큼 왼쪽 또는 오른쪽으로 돌린다. 정확히 RR번 돌린 뒤 맨 위에 수 kk가 오면 금고가 열린다.

현재 맨 위에 있는 수를 vv라고 하자(돌리기 전에는 v=1v = 1이다). L x로 표기하는 왼쪽 돌리기는 맨 위 수를 ((v−1+x) mod N)+1((v - 1 + x) \bmod N) + 1로 바꾸고, P x로 표기하는 오른쪽 돌리기는 ((v−1−x) mod N)+1((v - 1 - x) \bmod N) + 1로 바꾼다. 돌리기는 차례대로 하나씩 적용된다.

헥토르는 금고가 얼마나 안전한지 알고 싶다. 여러 목표에 대해, MM가지 방법 중에서 매번 하나씩 고른 RR번의 돌리기로 이루어진 순서열 가운데, 맨 위에 수 kk가 남는 서로 다른 순서열이 몇 개인지 구하면 된다.

입력

첫 번째 줄에는 테스트 세트의 개수를 나타내는 자연수 ZZ (Z=1Z = 1)가 주어진다. 이어서 각 세트가 차례로 주어진다.

각 세트의 첫 번째 줄에는 공백으로 구분된 두 자연수 NN, MM (1≤N,M≤20001 \le N, M \le 2000)이 주어진다. 다음 MM개의 줄은 각각 허용되는 돌리기 하나를 설명한다. 각 줄에는 방향을 나타내는 문자 L(왼쪽) 또는 P(오른쪽)가 오고, 공백 뒤에 돌리는 칸 수를 나타내는 자연수 xx (0<x<N0 < x < N)가 온다. MM개의 돌리기는 모두 서로 다르다.

그다음 줄에는 확인할 (R,k)(R, k) 쌍의 개수를 나타내는 자연수 TT (1≤T≤101 \le T \le 10)가 주어진다. 이어지는 TT개의 줄에는 각각 두 양의 정수 RR (1≤R≤1091 \le R \le 10^9)과 kk (1≤k≤N1 \le k \le N)가 주어진다.

출력

각 쌍 (R,k)(R, k)에 대해, 금고를 여는(즉, 맨 위에 kk가 남는) 서로 다른 RR번 돌리기 순서열의 개수를 10000331000033으로 나눈 나머지를 한 줄에 하나씩 음이 아닌 정수로 출력한다.

예제3

  1. 예제 1

    입력
    1
    3 3
    L 1
    P 1
    P 2
    3
    1 3
    1 2
    2 1
    
    예상 출력
    1
    2
    4
    
  2. 예제 2

    입력
    1
    2 1
    P 1
    3
    1 1
    1 2
    2 1
    
    예상 출력
    0
    1
    1
    
  3. 예제 3

    입력
    1
    4 3
    P 1
    L 1
    P 2
    6
    1 1
    1 2
    1 3
    1 4
    3 1
    3 3
    
    예상 출력
    0
    1
    1
    1
    6
    7