화려한 마을

N개의 집에 구간 칠하기 연산을 적용하고, 구간에 나타나는 T가지 색의 개수를 세는 질의에 답한다.

보통6세그먼트 트리비트 연산연결 리스트배열면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

민호가 관리하는 천나라에는 집이 N개 있다. 민호는 집을 관리하기 쉽도록 1번, 2번, ... N번으로 부른다.

어느 날 미적 감각에 눈을 뜬 민호는 특정 구간의 집을 새로운 색으로 칠하거나, 특정 구간의 집에 나타나는 색이 몇 가지인지 알고 싶어졌다.

작업은 다음 두 가지다.

  1. C x y z: x번 집과 y번 집, 그리고 그 사이에 있는 모든 집을 z번 색으로 칠한다.
  2. Q x y: x번 집과 y번 집, 그리고 그 사이에 있는 모든 집에 나타나는 색의 가짓수를 출력한다.

민호가 쓰는 색은 1번, 2번, ... T번이고, 처음에는 모든 집이 1번 색으로 칠해져 있다.

민호가 해야 하는 작업을 순서대로 처리하는 프로그램을 작성한다.

입력

첫째 줄에 N, T, Q가 공백으로 구분되어 주어진다 (1N1000001 \le N \le 100000, 1T301 \le T \le 30, 1Q1000001 \le Q \le 100000). 각각 천나라에 있는 집의 개수, 쓸 색의 개수, 작업의 개수다.

둘째 줄부터 Q개의 줄에 작업이 한 줄에 하나씩 주어진다. 각 작업은 C x y z 또는 Q x y 형식이며 1xN1 \le x \le N, 1yN1 \le y \le N, 1zT1 \le z \le T이다. x가 y보다 클 수도 있고, 이때 작업의 대상은 두 번호 사이의 구간, 즉 min(x,y)\min(x, y)번부터 max(x,y)\max(x, y)번까지의 집이다.

출력

Q x y 작업마다 한 줄에 하나씩, x번 집과 y번 집, 그리고 그 사이에 있는 모든 집에 나타나는 색의 가짓수를 출력한다.