만드는 중입니다

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

학교 메시지

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

요약
메신저 이벤트를 순서대로 처리하고, 조회 때마다 해당 사용자의 읽지 않은 메시지 수를 출력합니다.
난이도

보통10점 중 5점

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

문제

로샤는 스메샤리키들이 더 쉽게 공부할 수 있도록 학교를 열었다. 다른 학교와 마찬가지로 이 학교에도 선생님(예: 핀, 소브냐)과 학생(예: 크로시, 요지크)이 있고, 로샤는 교장이다. 학교에는 교직원과 학생을 합쳐 모두 nn명의 스메샤리키가 있다. 이들에게는 11부터 nn까지 번호가 붙어 있다.

메신저로 어떤 사용자든 다른 사용자에게 메시지를 보낼 수 있으며, 다음 규칙이 적용된다.

  1. 학생이 선생님에게 메시지를 보내면, 그 메시지의 사본이 교직원 전체에게 전달된다. 교장과 모든 선생님이 메시지를 받는다.
  2. 선생님이 학생에게 메시지를 보내면, 그 학생과 교장이 메시지를 받는다.
  3. 사용자가 메시지를 받으면 그 메시지는 해당 사용자의 읽지 않음 목록에 들어간다.
  4. 선생님이 학생이 보낸 읽지 않은 메시지를 읽으면, 그 메시지는 모든 선생님의 읽지 않음 목록에서 사라지지만 교장의 목록에서는 사라지지 않는다.
  5. 그 밖의 모든 경우에 사용자가 받은 읽지 않은 메시지를 읽으면, 그 메시지는 그 사용자의 목록에서만 사라진다.

교장이 학생이 보낸 읽지 않은 메시지를 읽으면, 그 메시지는 교장의 목록에서만 사라지고 선생님들의 목록에는 남는다.

로샤는 수업 과정을 개선하고 싶어서, 특정 시점에 어떤 사용자의 읽지 않은 메시지가 몇 개인지 알고 싶어 한다.

일어난 순서대로 qq개의 사건이 주어진다. 로샤의 질문에 해당하는 사건마다 답을 출력한다.

입력

첫 줄에 스메샤리키의 수 nn과 사건의 수 qq가 주어진다 (1≤n,q≤2⋅1051 \le n, q \le 2 \cdot 10^5). 둘째 줄에는 nn개의 정수 tit_i가 역할을 나타낸다. ti=0t_i = 0이면 ii번째는 교장 로샤이고, ti=1t_i = 1이면 선생님, 그 밖이면 학생이다. ti=0t_i = 0인 값은 정확히 하나다.

이후 qq개의 줄에 사건이 하나씩 주어진다.

  • 1 a b: 사용자 aa가 사용자 bb에게 메시지를 보냈다 (1≤a,b≤n1 \le a, b \le n, a≠ba \ne b).
  • 2 a x: 사용자 aa가 사건 번호 xx에 보낸 메시지를 읽었다 (1≤a≤n1 \le a \le n, 1≤x<i1 \le x < i). 이 메시지는 사용자 aa에게 전달되었고 아직 aa의 읽지 않음 목록에 있다고 보장된다.
  • 3 a: 사용자 aa의 읽지 않은 메시지 수를 출력한다 (1≤a≤n1 \le a \le n).

출력

종류가 3인 사건마다 답을 새 줄에 출력한다.

예제1

  1. 예제 1

    입력
    4 5
    0 1 1 2
    1 2 4
    1 4 2
    2 3 2
    3 1
    3 2
    
    예상 출력
    2
    0