질의

아직 제출이 없습니다시간 제한10초메모리 제한128 MB

문제

점들의 집합 Z 와 "허용치" S 가 주어질 때, 두 종류의 연산을 처리하는 프로그램을 작성한다.

  • 삭제: 집합 Z 에서 주어진 점을 제거한다.
  • 탐색: 집합 Z 의 "좌상단 점"을 찾는다.

좌상단 점은 다음과 같이 정한다. 현재 집합 Z 에 있는 점들 중 가장 큰 yy 좌표를 ymaxy_{\max} 라 하자. yy 좌표가 ymaxy_{\max} 보다 많아야 S 만큼 작은 점, 즉 yymaxSy \ge y_{\max} - S 를 만족하는 점들을 후보로 둔다. 후보 중에서 xx 좌표가 가장 작은(가장 왼쪽에 있는) 점이 좌상단 점이다. 그런 점이 여럿이면 그중 yy 좌표가 가장 큰(가장 위에 있는) 점을 택한다.

입력

첫 줄에 테스트 케이스의 수 TT 가 주어진다 (1T101 \le T \le 10). 이어서 각 테스트 케이스가 차례로 주어진다.

각 테스트 케이스의 첫 줄에는 공백으로 구분된 두 정수 NNSS 가 주어진다 (1N1051 \le N \le 10^5, 0S1090 \le S \le 10^9). 각각 집합 Z 의 초기 크기와 허용치를 뜻한다. 다음 NN 개의 줄에는 집합 Z 에 속한 점이 한 줄에 하나씩, 공백으로 구분된 두 정수 PXP_XPYP_Y 로 주어진다 (109PX,PY109-10^9 \le P_X, P_Y \le 10^9). 한 테스트 케이스 안의 점들은 서로 다르다.

그다음 줄에는 수행할 연산의 수 MM 이 주어진다 (1M21051 \le M \le 2 \cdot 10^5). 이어지는 MM 개의 줄은 각각 다음 두 형태 중 하나이다.

  • USUN PXP_X PYP_Y : 점 (PX,PY)(P_X, P_Y) 를 집합 Z 에서 삭제한다.
  • ZNAJDZ : 좌상단 점을 탐색한다.

삭제 연산에서 지정한 점은 그 시점에 반드시 집합 Z 안에 있다. 탐색 연산은 집합 Z 가 비어 있을 때는 호출되지 않는다.

출력

각 탐색(ZNAJDZ) 연산마다 찾은 점의 좌표를 x y 형식으로 한 줄에 하나씩 출력한다.