깨끗한 바닥 위에 개의 먼지가 있다. 바닥은 좌표평면으로 생각할 수 있고, 번째 먼지는 좌표 위치에 있는 점으로 생각할 수 있다.
먼지를 좋아하는 사람은 없기 때문에, 폭이 인 걸레로 이 먼지들을 쓸어내고 싶다.
먼지는 싫지만 청소도 귀찮기 때문에, 이 걸레를 딱 한 번 직선으로 끌면서 청소를 하려고 한다. 당연하게도 한 번의 청소로 최대한 많은 먼지를 없애고 싶다. 먼지는 걸레의 경계에 닿아도 없어진다.
먼지의 개수, 걸레의 폭, 먼지의 좌표가 주어졌을 때 위와 같은 방법으로 최대한 많이 없앨 수 있는 먼지의 수를 구하는 프로그램을 작성하라.
첫 줄에 테스트 케이스의 수를 나타내는 정수 가 주어진다. ()
그다음 줄부터 각 테스트 케이스에 대한 정보가 주어진다.
모든 테스트 케이스에서의 값의 총합은 을 넘지 않는다.
첫 줄에 문제에서 요구하는 먼지의 최대 개수를 출력한다.
2 3 1 1 2 2 4 4 1 4 2 1 2 2 3 3 5 4 0
2 3
첫 번째 테스트 케이스에서는 폭이 인 직선을 어떻게 긋더라도 최대 두 점만 직선 안에 포함시킬 수 있다. 따라서 답은 가 된다.
두 번째 테스트 케이스에서는 폭이 인 직선 안에 최대 개의 점을 넣을 수 있다.
아래 그림은 각각 첫 번째 테스트 케이스, 두 번째 테스트 케이스의 예이다.
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 17점
종류 2: 28점
종류 3: 25점
종류 4: 30점
모든 입력 케이스가 주어진다.