강의실 배치는 가능하다

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

문제

매년 여러 대학이 전국 규모의 프로그래밍 대회를 연다. 다카에서도 매년 ICPC 지역 대회가 열리고, 여기서 한두 팀이 ICPC 월드 파이널에 나간다.

이 대회를 지켜본 MMR(Mission Maker Rahman)은 프로그래밍 학교를 열기로 했다. 학교에서는 코스 NN개를 가르치고, 모든 코스는 매일 열린다. 계산 기하를 배우는 동안 다이나믹 프로그래밍을 잊어버리면 안 되기 때문이다. 코스 ii는 시각 AiA_i에 시작해서 시각 BiB_i에 끝나고, 양쪽 끝 시각도 수업 시간에 들어간다. 코스 ii의 수강생은 SiS_i명이고, 두 코스를 같이 듣는 학생은 없다.

MMR은 Sentinel Tower라는 건물의 방 몇 개를 빌려 학교를 운영하려 한다. 방 하나에는 학생이 최대 MM명까지 들어간다. 그래서 코스 ii는 같은 시간에 방 Si/M\lceil S_i / M \rceil개를 쓰고, 각 방에서 같은 수업을 따로 진행한다.

프로그래머는 잠시도 가만히 있지 못하고 뒷정리에도 관심이 없다. 그래서 어떤 방에서 코스 ii 수업이 끝나면, 같은 방에서 코스 jj 수업을 시작하기 전에 청소하는 데 cleanij\text{clean}_{ij}만큼의 시간이 걸린다. 정리하면 같은 방에서 코스 ii 바로 다음에 코스 jj를 진행할 수 있는 조건은 Bi+cleanij<AjB_i + \text{clean}_{ij} < A_j이다.

모든 코스가 매일 같은 시각에 반복되므로 하루 일정만 계획하면 된다. MMR이 빌려야 하는 방의 최소 개수를 구하자.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. (T100T \le 100)

각 테스트 케이스의 첫째 줄에는 코스의 개수 NN과 방 하나의 정원 MM이 주어진다. (1N1001 \le N \le 100, 1M100001 \le M \le 10000)

다음 NN개 줄에는 코스 ii의 시작 시각 AiA_i, 종료 시각 BiB_i, 수강생 수 SiS_i가 주어진다. (0AiBi1070 \le A_i \le B_i \le 10^7, 1Si100001 \le S_i \le 10000)

그다음 NN개 줄에는 청소 시간 행렬이 주어진다. ii번째 줄의 jj번째 정수가 cleanij\text{clean}_{ij}이다. (0cleanij1070 \le \text{clean}_{ij} \le 10^7, cleanii=0\text{clean}_{ii} = 0)

출력

각 테스트 케이스마다 Case x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 빌려야 하는 방의 최소 개수이다.