만드는 중입니다

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

자동차

시간 제한1초메모리 제한64 MB

요약
각 칸에 행 우선 번호가 들어 있는 행렬에서 K번의 행 곱셈과 열 곱셈을 순서대로 적용한 뒤 전체 합을 10^9+7로 나눈 나머지를 구한다.
난이도

보통10점 중 4점

유형
수학, 구현, 해시맵, 누적 합
정답자
아직 제출이 없습니다

문제

Mirko는 자동차 뒷좌석에서 NN행 MM열짜리 행렬을 찾았다. 첫째 행에는 1,2,…,M1, 2, \dots, M이 차례로 적혀 있고, 둘째 행에는 M+1,M+2,…,2MM+1, M+2, \dots, 2M이 적혀 있다. 같은 규칙으로 이어져 NN째 행에는 (N−1)M+1,(N−1)M+2,…,NM(N-1)M+1, (N-1)M+2, \dots, NM이 적혀 있다.

N=3N = 3, M=4M = 4인 경우는 다음과 같다.

1234
5678
9101112

이 행렬이 심심했던 Mirko는 행이나 열을 하나 고른 뒤 그 줄에 있는 값에 모두 음이 아닌 정수를 곱하는 작업을 KK번 했다. Mirko는 최종 행렬에 있는 모든 값의 합을 알고 싶다. 합이 매우 커질 수 있으므로 109+710^9+7로 나눈 나머지를 구하면 된다.

입력

첫째 줄에 NN (1≤N≤1061 \le N \le 10^6), MM (1≤M≤1061 \le M \le 10^6), KK (1≤K≤10001 \le K \le 1000)이 공백으로 구분되어 주어진다. 다음 KK줄에는 작업이 수행된 순서대로 한 줄에 하나씩 주어진다.

  • "R X Y"는 XX째 행에 있는 값에 모두 YY를 곱한다는 뜻이다. XX는 1≤X≤N1 \le X \le N인 정수이고, YY는 0≤Y≤1090 \le Y \le 10^9인 정수이다.
  • "S X Y"는 XX째 열에 있는 값에 모두 YY를 곱한다는 뜻이다. XX는 1≤X≤M1 \le X \le M인 정수이고, YY는 0≤Y≤1090 \le Y \le 10^9인 정수이다.

출력

최종 행렬에 있는 모든 값의 합을 109+710^9+7로 나눈 나머지를 첫째 줄에 출력한다.

힌트

첫 번째 예제를 살펴보자. 둘째 행에 4를 곱하고, 넷째 열에 1을 곱하고, 셋째 행에 2를 곱한 뒤, 둘째 행에 다시 0을 곱하면 행렬은 다음과 같이 된다.

1234
0000
18202224

모든 값의 합은 1+2+3+4+0+0+0+0+18+20+22+24=941 + 2 + 3 + 4 + 0 + 0 + 0 + 0 + 18 + 20 + 22 + 24 = 94이다.

예제3

  1. 예제 1

    입력
    3 4 4
    R 2 4
    S 4 1
    R 3 2
    R 2 0
    
    예상 출력
    94
    
  2. 예제 2

    입력
    3 1 1
    S 1 4
    
    예상 출력
    24
    
  3. 예제 3

    입력
    2 4 4
    S 2 0
    S 2 3
    R 1 5
    S 1 3
    
    예상 출력
    80