반평면 땅따먹기 2

직선의 집합에 추가와 삭제가 번갈아 일어나는 가운데 주어진 x에서 최댓값을 온라인으로 답한다.

어려움9동적 계획법분할 정복세그먼트 트리기하아직 제출이 없습니다시간 제한4초메모리 제한512 MB

문제

정수 쌍 (a,b)(a, b)를 담는 집합 SS가 있다. 처음에 SS는 공집합이다. 아래 세 종류의 연산이 nn개 주어진다.

  1. 정수 쌍 (a,b)(a, b)SS에 추가한다.
  2. ii번째 연산에서 추가한 정수 쌍을 SS에서 제거한다.
  3. 정수 xx가 주어지면, SS에 들어 있는 모든 정수 쌍 (a,b)(a, b)ax+bax + b의 최댓값을 출력한다.

연산을 주어진 순서대로 처리하는 프로그램을 작성한다.

입력

첫째 줄에 연산의 개수 nn이 주어진다. (1n3000001 \le n \le 300000)

둘째 줄부터 nn개의 줄에 연산이 한 줄에 하나씩 주어진다. 각 줄은 연산의 종류를 나타내는 정수 Type으로 시작하고, Type은 1, 2, 3 중 하나이다.

Type이 1이면 정수 aabb가 이어서 주어진다. (109a,b109-10^9 \le a, b \le 10^9)

Type이 2이면 정수 ii가 이어서 주어진다. (1in1 \le i \le n) ii는 이 연산의 번호보다 작고, ii번째 연산은 1번 연산이며, 그 연산으로 추가한 정수 쌍은 아직 제거되지 않았다.

Type이 3이면 정수 xx가 이어서 주어진다. (109x109-10^9 \le x \le 10^9)

출력

3번 연산마다 답을 한 줄에 하나씩 순서대로 출력한다. 그 시점에 SS가 공집합이면 따옴표 없이 EMPTY를 출력한다.