마을 뒷산에는 주민들이 체력을 기르도록 만든 운동 시설이 있다. 그중 하나는 숲을 가로지르는 곧은 오솔길을 따라 놓인 여러 개의 통나무로 이루어져 있다. 통나무는 모두 길이가 같고, 오솔길과 나란한 방향으로 놓여 있다.
이곳에서 즐기는 유명한 놀이가 "통나무 건너뛰기"이다. 집중력을 겨루는 놀이로, 아래 규칙에 따라 되도록 많은 통나무를 밟는 것이 목표이다.
예를 들어 길이가 5인 통나무 여덟 개가 아래 그림처럼 1번부터 8번까지 놓여 있다고 하자. 2번에서 출발해 4번, 7번, 8번, 5번을 차례로 밟고 다시 2번으로 돌아오면 모두 다섯 개의 통나무를 밟게 된다. 이런 방식으로는 다섯 개보다 많이 밟을 수 없으므로, 이 경우 최대 개수는 다섯이다. 
통나무의 길이와 각 통나무의 위치가 주어질 때, 하진이가 밟을 수 있는 통나무의 최대 개수를 구하는 프로그램을 작성하라. 두 통나무는 가로로 차지하는 구간이 한 점이라도 겹치면 서로 건너뛸 수 있다. 특히 한 통나무의 오른쪽 끝과 다른 통나무의 왼쪽 끝의 좌표가 같으면, 그 두 통나무 사이를 양방향으로 건너뛸 수 있다. 위 그림에서는 1번과 4번 사이를 건너뛸 수 있다.
입력은 표준 입력으로 주어진다. 첫째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스는 두 줄로 이루어진다. 첫째 줄에는 통나무의 개수 n과 공통 길이 k가 주어진다 (1≤n≤5000, 1≤k≤100000). 둘째 줄에는 n개의 정수 x1,x2,…,xn이 공백 하나로 구분되어 주어지며, xi는 i번째 통나무의 왼쪽 끝의 x좌표이다 (−1000000≤xi≤1000000). 따라서 각 통나무는 xi부터 xi+k까지의 구간을 차지한다.
표준 출력으로 출력한다. 각 테스트 케이스마다 밟을 수 있는 통나무의 최대 개수를 한 줄에 하나씩 출력한다.