시간 여행과 Multiset

시간 축을 가진 multiset에서 삽입, 삭제, 개수 질의를 처리한다. 값 x의 시각 t에서의 개수는 t 이하 시각의 이전 연산들로 결정된다.

보통6동적 계획법이분 탐색누적 합배열면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

성관이는 시간 여행을 하는 타임머신을 만들었다. 하지만 여기는 알고리즘 문제이므로, 그는 멋진 일을 하는 대신 시간 여행을 multiset에 적용하기로 했다.

시간 여행이 가능한 multiset은 다음 세 가지 연산을 지원한다.

  1. 시간 tt로 가서 multiset에 정수 xx를 하나 넣는다.
  2. 시간 tt로 가서 multiset에서 정수 xx를 하나 뺀다. 시간 tt에 정수 xx가 하나 이상 들어 있음이 보장된다.
  3. 시간 tt에 multiset에 정수 xx가 몇 개 들어 있는지 출력한다.

시간 tt에 넣은 정수는 시간 tt부터 계속 남아 있고, 시간 tt에 뺀 정수는 시간 tt부터 사라진다. 그래서 시간 tt에 들어 있는 정수 xx의 개수는 지금까지 처리한 연산 중 시간이 tt 이하인 1번 연산의 수에서 시간이 tt 이하인 2번 연산의 수를 뺀 값이다.

예를 들어 정수 1을 시간 2에 두 개 넣고 시간 5에 하나 뺐다고 하자. 정수 1은 시간 2부터 4까지 두 개, 시간 5부터는 한 개 남아 있다. 여기서 시간 4에 정수 1을 하나 더 빼면 시간 2부터 3까지 두 개, 시간 4에 한 개가 되고 시간 5부터는 남지 않는다. 이 상태에서 시간 5에 정수 1을 빼는 연산은 그 시점에 정수 1이 없으므로 입력으로 주어지지 않는다.

연산은 입력에 주어진 순서대로 처리한다. 3번 연산의 답에는 그 연산보다 앞에 있는 1번 연산과 2번 연산만 반영한다.

위와 같이 동작하는 프로그램을 작성하시오.

입력

첫째 줄에 질의의 개수 NN이 주어진다. (1N1000001 \le N \le 100\,000)

다음 NN개의 줄에 질의가 한 줄에 하나씩 주어진다. 각 줄은 세 자연수 aia_i, tit_i, xix_i로 이루어진다. (1ai31 \le a_i \le 3, 1ti,xi1091 \le t_i, x_i \le 10^9) aia_i는 연산의 종류이고, tit_ixix_i는 문제 설명의 ttxx이다.

출력

aia_i가 3인 질의마다 그 답을 한 줄에 하나씩 출력한다.