만드는 중입니다

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

조교의 기묘한 시험

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

요약
학생들이 정수를 적고 입장하거나 퇴장하며, 이벤트마다 값이 유일한 학생에게 점수를 줍니다. 입장 순서대로 각 학생의 최종 점수를 출력합니다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

한 대학교 강의의 조교를 맡고 있는 실버는 눈치 게임을 좋아합니다. 학생들이 실습에 즐겁게 참여하도록, 실버는 학생들의 실습 점수를 기묘하게 매기기로 했습니다.

각 학생은 자유롭게 실습에 들어오고 나갈 수 있습니다. 다만 한 번 실습에서 나가면 다시 들어올 수 없습니다. 실습에 들어올 때 학생은 종이에 11 이상 1 000 0001\,000\,000 이하의 정수를 하나 적어서 들고 들어옵니다. 실습 도중 실버는 기묘한 이벤트를 엽니다. 이벤트가 열리면 현재 실습에 있는 학생들은 자신이 적은 정수를 바탕으로 다음과 같이 점수를 얻습니다.

  • 자신이 적은 정수가 현재 실습에 있는 다른 사람과 겹치면 점수를 얻지 못합니다.
  • 자신이 적은 정수가 현재 실습에 있는 다른 사람과 겹치지 않으면 11점을 얻습니다.
  • 다른 사람과 겹치지 않게 정수를 적은 사람들 중 가장 큰 수를 적은 사람은 추가로 ss점을 더 얻어 총 1+s1+s점을 얻습니다. ss는 이벤트마다 다를 수 있습니다. 다른 사람과 겹치지 않게 정수를 적은 사람이 없다면 아무도 점수를 얻지 못합니다.

실버는 학생들의 실습 출입 기록과 기묘한 이벤트가 열린 기록을 총 QQ개의 질의로 정리했습니다. 질의는 다음 세 가지 중 하나입니다.

  • 1 x1\ x: 정수 xx를 들고 있는 학생이 실습에 들어옵니다.
  • 2 k2\ k: 이전에 나간 학생을 포함해 지금까지 들어온 학생 중 kk번째로 들어온 학생이 실습에서 나갑니다. kk번째로 들어온 학생은 현재 실습에 있습니다.
  • 3 s3\ s: 기묘한 이벤트가 열립니다. 현재 실습에 있는 학생 중 자신이 적은 정수가 다른 학생과 겹치지 않는 학생들이 11점을 얻습니다. 그중 가장 큰 수를 적은 학생은 추가로 ss점을 더 얻습니다.

모든 질의를 순서대로 처리한 뒤, 유형 11의 질의 개수 NN에 대해 11번째부터 NN번째로 들어온 학생이 받은 점수를 순서대로 출력하는 프로그램을 작성해봅시다.

입력

첫 번째 줄에 질의의 개수 QQ가 주어집니다. (1≤Q≤500 0001\le Q\le 500\,000)

다음 QQ개의 줄에 질의가 주어집니다. 각 질의는 1 x1\ x, 2 k2\ k, 3 s3\ s 중 하나입니다.

  • 유형 1의 질의는 1개 이상 있습니다.
  • 유형 1의 질의에서 1≤x≤1 000 0001\le x\le 1\,000\,000이며 xx는 정수입니다.
  • 유형 2의 질의에서 1≤k1\le k이며 kk는 정수입니다. kk번째로 들어온 학생은 실습에 있습니다.
  • 유형 3의 질의에서 1≤s≤1091\le s\le 10^9이며 ss는 정수입니다.

출력

유형 11의 질의 개수 NN에 대해 NN개의 줄을 출력합니다.

ii번째 줄에는 ii번째로 들어온 학생이 받은 점수를 출력합니다.

예제1

  1. 예제 1

    입력
    18
    1 3
    3 100
    1 7
    3 200
    1 5
    3 400
    1 7
    3 800
    2 2
    3 1600
    1 5
    3 3200
    1 7
    3 6400
    1 3
    3 12800
    2 5
    3 25600
    
    예상 출력
    6507
    602
    26404
    4802
    0
    0
    0