청소

NYPC 2025 · Round 2-A

깨끗한 바닥 위에 NN개의 먼지가 있다. 바닥은 좌표평면으로 생각할 수 있고, ii번째 (1iN)(1 \le i \le N) 먼지는 좌표 (xi,yi)(x_i , y_i) 위치에 있는 점으로 생각할 수 있다.

먼지를 좋아하는 사람은 없기 때문에, 폭이 LL인 걸레로 이 먼지들을 쓸어내고 싶다.

먼지는 싫지만 청소도 귀찮기 때문에, 이 걸레를 딱 한 번 직선으로 끌면서 청소를 하려고 한다. 당연하게도 한 번의 청소로 최대한 많은 먼지를 없애고 싶다. 먼지는 걸레의 경계에 닿아도 없어진다.

먼지의 개수, 걸레의 폭, 먼지의 좌표가 주어졌을 때 위와 같은 방법으로 최대한 많이 없앨 수 있는 먼지의 수를 구하는 프로그램을 작성하라.

입력 형식

첫 줄에 테스트 케이스의 수를 나타내는 정수 TT가 주어진다. (1T15001 \le T \le 1\,500)

그다음 줄부터 각 테스트 케이스에 대한 정보가 주어진다.

  • 각 테스트 케이스의 첫 줄에는 먼지의 수를 나타내는 정수 NN과 걸레의 폭을 나타내는 정수 LL이 주어진다. (1N1500;1 \le N \le 1\,500; 1L10000001 \le L \le 1\,000\,000)
  • 그다음 NN줄에 걸쳐 한 줄에 하나씩 먼지의 위치를 나타내는 두 개의 정수 xix_i, yiy_i가 공백으로 구분되어 주어진다. (1000000xi,yi1000000-1\,000\,000 \le x_i, y_i \le 1\,000\,000)
  • 하나의 테스트 케이스 안에서, 각 먼지의 위치는 서로 다르다.

모든 테스트 케이스에서의 NN 값의 총합은 15001\,500을 넘지 않는다.

출력 형식

첫 줄에 문제에서 요구하는 먼지의 최대 개수를 출력한다.

예제

입력

2 3 1 1 2 2 4 4 1 4 2 1 2 2 3 3 5 4 0

출력

2 3

예제 설명

  • 첫 번째 테스트 케이스에서는 폭이 11인 직선을 어떻게 긋더라도 최대 두 점만 직선 안에 포함시킬 수 있다. 따라서 답은 22가 된다.

  • 두 번째 테스트 케이스에서는 폭이 22인 직선 안에 최대 33개의 점을 넣을 수 있다.

아래 그림은 각각 첫 번째 테스트 케이스, 두 번째 테스트 케이스의 예이다.

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 17점

N3N \le 3

종류 2: 28점

N300N \le 300

종류 3: 25점

50xi,yi50-50 \le x_i, y_i \le 50

종류 4: 30점

모든 입력 케이스가 주어진다.

해설