통나무 건너뛰기

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

문제

마을 뒷산에는 주민들이 체력을 기르도록 만든 운동 시설이 있다. 그중 하나는 숲을 가로지르는 곧은 오솔길을 따라 놓인 여러 개의 통나무로 이루어져 있다. 통나무는 모두 길이가 같고, 오솔길과 나란한 방향으로 놓여 있다.

이곳에서 즐기는 유명한 놀이가 "통나무 건너뛰기"이다. 집중력을 겨루는 놀이로, 아래 규칙에 따라 되도록 많은 통나무를 밟는 것이 목표이다.

  1. 아무 통나무나 하나 골라 그 위에 올라선다. 통나무에 올라서는 것을 "밟는다"고 하며, 지금 올라서 있는 통나무 위에서는 자유롭게 걸어 다닐 수 있다.
  2. 아직 밟지 않은 통나무를 하나 골라 그 위로 뛰어 건넌다. 뛰는 방향은 반드시 통나무와 수직이어야 한다. 원하는 만큼 이 과정을 반복한다.
  3. 마지막으로 밟는 통나무는 처음 출발한 통나무와 같아야 한다. 처음이자 마지막인 그 통나무를 빼면, 각 통나무는 최대 한 번만 밟을 수 있다. 출발한 통나무로 돌아오면 놀이가 끝난다.

예를 들어 길이가 55인 통나무 여덟 개가 아래 그림처럼 11번부터 88번까지 놓여 있다고 하자. 22번에서 출발해 44번, 77번, 88번, 55번을 차례로 밟고 다시 22번으로 돌아오면 모두 다섯 개의 통나무를 밟게 된다. 이런 방식으로는 다섯 개보다 많이 밟을 수 없으므로, 이 경우 최대 개수는 다섯이다.

통나무의 길이와 각 통나무의 위치가 주어질 때, 하진이가 밟을 수 있는 통나무의 최대 개수를 구하는 프로그램을 작성하라. 두 통나무는 가로로 차지하는 구간이 한 점이라도 겹치면 서로 건너뛸 수 있다. 특히 한 통나무의 오른쪽 끝과 다른 통나무의 왼쪽 끝의 좌표가 같으면, 그 두 통나무 사이를 양방향으로 건너뛸 수 있다. 위 그림에서는 11번과 44번 사이를 건너뛸 수 있다.

입력

입력은 표준 입력으로 주어진다. 첫째 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스는 두 줄로 이루어진다. 첫째 줄에는 통나무의 개수 nn과 공통 길이 kk가 주어진다 (1n50001 \le n \le 5000, 1k1000001 \le k \le 100000). 둘째 줄에는 nn개의 정수 x1,x2,,xnx_1, x_2, \ldots, x_n이 공백 하나로 구분되어 주어지며, xix_iii번째 통나무의 왼쪽 끝의 xx좌표이다 (1000000xi1000000-1000000 \le x_i \le 1000000). 따라서 각 통나무는 xix_i부터 xi+kx_i + k까지의 구간을 차지한다.

출력

표준 출력으로 출력한다. 각 테스트 케이스마다 밟을 수 있는 통나무의 최대 개수를 한 줄에 하나씩 출력한다.