동적 채점
온라인 저지(Online Judge) 플랫폼을 운영 중인 골드는 서버의 부하를 줄이기 위해 새로운 동적 채점 슬롯 배정 시스템을 도입하고자 한다.
서버에는 1번부터 1,000,000,000번까지 번호가 매겨진 가상의 채점 슬롯들이 존재한다.
초기 상태에서는 활성화되어 가동 중인 채점 슬롯이 단 하나도 없다.
이후 채점 요청과 서버 상태 변경을 나타내는 \(N\)개의 명령이 순서대로 주어질 때, 각 명령을 수행하는 프로그램을 작성하시오.
명령은 다음 세 가지 형태 중 하나로 주어진다.
- 1 x: 슬롯 번호 \(x\)를 활성화하여 가동한다. (이미 가동 중인 슬롯 번호가 다시 주어지지는 않는다.)
- 2 x: 가동 중이던 슬롯 번호 \(x\)의 가동을 중단한다. (현재 가동 중인 슬롯 번호만 주어지며, 중단된 슬롯은 목록에서 제거된다.)
- 3 q: 현재 가동 중인 슬롯 중, 번호 \(q\) 이상이면서 \(q\)와 가장 가까운 슬롯의 번호를 출력한다. 만약 그러한 슬롯이 여러 개 존재한다면 번호가 가장 작은 것을 선택한다. 만약 \(q\) 이상인 가동 중인 슬롯이 전혀 없다면 -1을 출력한다.
입력
첫째 줄에 명령의 수 \(N\)이 주어진다.
둘째 줄부터 \(N\)개의 줄에 명령이 하나씩 주어진다.
출력
3번 명령(3 q)이 주어질 때마다 해당 명령의 결과를 한 줄에 하나씩 출력한다.
제한사항
- \(1 \le N \le 100000\)
- \(1 \le x, q \le 10^9\)
- 3번 명령은 최소 하나 이상 주어진다.
예제 입력 1
8
1 10
1 30
1 20
3 15
3 25
2 20
3 15
3 35
예제 출력 1
20
30
30
-1
코멘트