사람, 코끼리, 쥐

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

요약
각 선수가 세 가지 손 모양을 순환하는 상황에서 구간 갱신은 모든 선수를 다음 손 모양으로 넘기고, 구간 질의는 손 모양별 인원을 출력한다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 연결 리스트, 구현
정답자
아직 제출이 없습니다

문제

놀로니아에서 아주 인기 있는 놀이가 사람, 코끼리, 쥐다. 보통 두 명이 하며 규칙은 이렇다. 두 사람이 각각 세 가지 손 모양 가운데 하나를 몰래 고르고, 수를 센 뒤 동시에 한 손을 앞으로 내밀어 고른 손 모양을 보여 준다.

사람은 주먹을 쥔 손으로 나타낸다. 사람의 머리 모양이다. 코끼리는 다섯 손가락을 모두 펼친 손으로 나타낸다. 놀로니아 코끼리의 발 모양이다. 쥐는 주먹을 쥔 채 집게손가락과 가운뎃손가락만 펼친 손으로 나타낸다. 그 작은 짐승의 귀 모양이다.

사람, 코끼리, 쥐의 세 가지 손 모양

그림 1: 사람, 코끼리, 쥐의 세 가지 손 모양.

승패는 간단하게 정해진다. 사람은 코끼리에게 항상 진다. 코끼리 발에 밟히기 때문이다. 코끼리는 쥐에게 항상 진다. 쥐를 무서워해서 달아나기 때문이다. 쥐는 사람에게 항상 진다. 사람이 덫을 놓아 잡기 때문이다. 두 사람이 같은 손 모양을 내면 무승부이고, 다시 한다.

놀로니아 주민은 이 놀이에 타고난 전략가라서, 매년 열리는 전국 대회에서 다음 방법을 쓴다. 처음에는 늘 사람을 내고, 그 손 모양이 상대 대부분과 무승부를 만드는 순간에 자기가 쓰던 손 모양을 이기는 손 모양으로 전략을 바꾼다. 그래서 사람에서 코끼리로, 코끼리에서 쥐로, 쥐에서 다시 사람으로 옮겨 간다.

사람, 코끼리, 쥐와 조금 비슷한 놀이를 하는 유명한 외국 선수를 돕기 위해, 각 손 모양을 쓰는 선수가 몇 명인지 세는 프로그램을 만든다.

선수 NN명이 한 줄로 서 있고, 줄에서의 위치에 따라 11번부터 NN번까지 번호가 붙어 있다. 처음에는 NN명 모두 사람을 쓴다. 프로그램은 명령 MM개를 처리한다. 명령은 손 모양 바꾸기와 손 모양 세기 두 종류이고, 둘 다 줄에서 연속한 구간을 받는다.

입력

입력은 여러 테스트 케이스로 이루어지며, 파일이 끝날 때까지 이어진다.

각 테스트 케이스의 첫 줄에 정수 NN과 MM이 주어진다 (1≤N≤1051 \le N \le 10^5, 0≤M≤1060 \le M \le 10^6). NN은 대회에 나온 선수의 수이고 MM은 명령의 수다. 테스트 케이스가 시작할 때 NN명 모두 사람을 쓴다.

다음 MM개의 줄에 명령이 한 줄에 하나씩 주어진다.

전략을 바꾸는 명령은 M A B 꼴이다 (1≤A≤B≤N1 \le A \le B \le N). 줄에서의 위치가 AA번 이상 BB번 이하인 선수가 각자 자기가 쓰던 손 모양을 이기는 손 모양으로 바꾼다.

세는 명령은 C A B 꼴이다 (1≤A≤B≤N1 \le A \le B \le N). 줄에서의 위치가 AA번 이상 BB번 이하인 선수를 센다.

출력

세는 명령마다 한 줄에 정수 세 개를 출력한다. 주어진 구간에서 사람, 코끼리, 쥐를 쓰는 선수의 수를 이 순서대로 출력한다.

테스트 케이스마다 그 뒤에 빈 줄을 하나 출력한다. 입력의 마지막 테스트 케이스 뒤에도 출력한다.

예제2

  1. 예제 1

    입력
    10 7
    C 1 10
    M 5 6
    C 5 6
    M 6 7
    C 4 8
    M 1 10
    C 1 10
    5 6
    M 1 5
    M 2 4
    M 1 2
    M 4 5
    C 1 5
    C 3 4
    
    예상 출력
    10 0 0
    0 2 0
    2 2 1
    1 7 2
    
    2 0 3
    1 0 1
    
  2. 예제 2

    입력
    1 6
    C 1 1
    M 1 1
    C 1 1
    M 1 1
    C 1 1
    M 1 1
    
    예상 출력
    1 0 0
    0 1 0
    0 0 1