점들의 집합 Z 와 "허용치" S 가 주어질 때, 두 종류의 연산을 처리하는 프로그램을 작성한다.
좌상단 점은 다음과 같이 정한다. 현재 집합 Z 에 있는 점들 중 가장 큰 y 좌표를 ymax 라 하자. y 좌표가 ymax 보다 많아야 S 만큼 작은 점, 즉 y≥ymax−S 를 만족하는 점들을 후보로 둔다. 후보 중에서 x 좌표가 가장 작은(가장 왼쪽에 있는) 점이 좌상단 점이다. 그런 점이 여럿이면 그중 y 좌표가 가장 큰(가장 위에 있는) 점을 택한다.
첫 줄에 테스트 케이스의 수 T 가 주어진다 (1≤T≤10). 이어서 각 테스트 케이스가 차례로 주어진다.
각 테스트 케이스의 첫 줄에는 공백으로 구분된 두 정수 N 과 S 가 주어진다 (1≤N≤105, 0≤S≤109). 각각 집합 Z 의 초기 크기와 허용치를 뜻한다. 다음 N 개의 줄에는 집합 Z 에 속한 점이 한 줄에 하나씩, 공백으로 구분된 두 정수 PX 와 PY 로 주어진다 (−109≤PX,PY≤109). 한 테스트 케이스 안의 점들은 서로 다르다.
그다음 줄에는 수행할 연산의 수 M 이 주어진다 (1≤M≤2⋅105). 이어지는 M 개의 줄은 각각 다음 두 형태 중 하나이다.
USUN PX PY : 점 (PX,PY) 를 집합 Z 에서 삭제한다.ZNAJDZ : 좌상단 점을 탐색한다.삭제 연산에서 지정한 점은 그 시점에 반드시 집합 Z 안에 있다. 탐색 연산은 집합 Z 가 비어 있을 때는 호출되지 않는다.
각 탐색(ZNAJDZ) 연산마다 찾은 점의 좌표를 x y 형식으로 한 줄에 하나씩 출력한다.