Школьные переписки
Школьные переписки
Лосяш решил сделать обучение более доступным для Смешариков и открыл школу. Разумеется, как и в любой другой школе, в этой школе есть учителя (например, Пин и Совунья) и есть ученики (например, Крош и Ёжик). Ну и, конечно же, Лосяш - директор. Всего суммарно в школе n Смешариков (преподавательского состава и учеников). Для удобства, пронумеруем их натуральными числами от 1 до n.
Для общения между учениками и учителями был создан мессенджер, который позволяет написать сообщение любому другому пользователю, но с некоторыми дополнительными правилами:
- Если ученик пишет учителю, то копия этого сообщения отправляется всему преподавательскому составу. То есть, директору и всем учителям. Иными словами, директор и каждый учитель получат это сообщение.
- Если учитель пишет сообщение ученику, то сообщение получат этот ученик и директор.
- Когда пользователю приходит сообщение, оно попадает в непрочитанные.
- Когда учитель читает непрочитанное сообщение, отправленное учеником, это сообщение исчезает из непрочитанных у всех учителей, но не у директора.
- Во всех остальных случаях, когда пользователь читает полученное непрочитанное сообщение, оно удаляется из непрочитанных только у него.
Обратите внимание, что когда директор читает непрочитанное сообщение, отправленное учеником, оно удаляется из непрочитанных только у него (но не у учителей).
Лосяш хочет оптимизировать учебный процесс, поэтому в некоторые моменты времени ему интересно, сколько непрочитанных сообщений есть у какого-то конкретного пользователя.
Вам дана последовательность из q событий в том порядке, в котором они происходили. Для каждого события, соответствующего вопросу Лосяша, выведите ответ.
Входные данные
В первой строке даны два целых числа n и q (1 ≤ n, q ≤ 2 * 105
) - количество Смешариков в школе и количество событий, соответственно.
Во второй строке даны n целых чисел ti
(ti
∈ 0, 1, 2) - роли Смешариков. Если ti
= 0, то i-й Смешарик - это директор Лосяш. Если ti
= 1 - это учитель. Иначе - ученик. Гарантируется, что ровно одно число среди ti
равно 0.
В следующих q (1 ≤ i ≤ q) строках дано описание событий. Событие номер i может иметь один из трех типов:
- "1
ai bi
" - пользовательai
отправил сообщение пользователюbi
(1 ≤ai
,bi
≤ n,ai
≠bi
). - "2
ai xi
" - пользовательai
прочитал сообщение, отправленное во время события номерxi
(1 ≤ai
≤ n, 1 ≤xi
< i). - "3
ai
" - требуется вывести количество непрочитанных сообщений у пользователяai
(1 ≤ai
≤ n).
Для всех событий второго типа гарантируется, что во время события номер xi
было отправлено сообщение, попавшее в непрочитанные к пользователю номер ai
. А также, что это сообщение еще находится у него в непрочитанных.
Выходные данные
Для каждого события третьего типа выведите на новой строке количество непрочитанных сообщений у пользователя ai
.
4 5 0 1 1 2 1 2 4 1 4 2 2 3 2 3 1 3 2
2 0