많은 해변에서 볼 수 있는 소라게는 꽤 흥미로운 생물이다. 게의 친척이지만 배가 물러서, 몸을 보호하려면 고둥(바다 달팽이)의 빈 껍데기 속에서 살아야 한다. 그래서 우리가 실제로 보는 것은 해변을 종종거리며 돌아다니는 고둥 껍데기다. 가까이 다가가면 소라게는 껍데기 속으로 몸을 숨기고, 큰 집게발로 입구를 막아 그냥 껍데기처럼 보인다. 대부분의 동물처럼 소라게도 시간이 지나면 자라기 때문에, 언젠가는 더 큰 껍데기로 옮겨야 한다. 알맞은 껍데기를 찾지 못한 소라게는 대개 금방 잡아먹히며, 껍데기가 부족하면 서로 싸우기도 한다. 여기서는 소라게들이 껍데기보다 커지는 동안 어떤 소라게가 살아남는지를 알아본다.
문제를 단순화하기 위해 다음과 같이 가정한다.
크기가 같은 두 소라게는 없고, 크기가 같은 두 껍데기도 없으므로 위의 모든 선택은 유일하게 결정된다. 시각 $T$ 에 아직 살아 있는 소라게들을 구하라.
첫 줄에 데이터 집합의 수 $K$ 가 주어진다. 이어서 $K$ 개의 데이터 집합이 다음 형식으로 주어진다.
각 데이터 집합의 첫 줄에는 네 정수 $n$, $m$, $D$, $T$ 가 주어진다. $n$ 은 소라게의 수, $m$ 은 껍데기의 수이며 $1 \le n \le m \le 1000$ 을 만족한다. $D$ 는 위 설명의 상수이고, $T$ 는 관찰 기간의 길이다.
다음 $n$ 개의 줄에는 각각 소라게 $i$ 의 처음 크기 $c_i$ 가 하나씩 주어진다(모든 $c_i$ 는 서로 다르다). 그다음 $m$ 개의 줄에는 각각 껍데기 $j$ 의 크기 $s_j$ 가 하나씩 주어진다(모든 $s_j$ 는 서로 다르다). 입력은 $i = 1, \dots, n$ 에 대해 $s_i - D \le c_i \le s_i$ 를 보장하므로, 처음에 껍데기 $i$ 는 소라게 $i$ 에게 알맞다.
각 데이터 집합마다 먼저 Data Set x: 를 한 줄에 출력한다. 여기서 $x$ 는 데이터 집합의 번호이다($1$ 부터 시작). 그다음 시각 $T$ 에 아직 살아 있는 모든 소라게의 번호를 증가하는 순서로 한 줄에 하나씩 출력한다. 각 데이터 집합 뒤에는 빈 줄을 하나 출력한다.