상근이는 자신의 이름을 딴 스포츠 전문 방송국 GSK를 세웠다. GSK는 곧 열리는 N개의 경기를 모두 취재하려고 한다.
각 경기 Ei (1≤i≤N)에는 시작 시간 si, 진행 시간 di, 그리고 열리는 경기장 gi가 있다. 따라서 경기 Ei는 시각 si에 시작해 시각 si+di에 끝난다. 경기장 gi에서 gj로 이동하는 데 걸리는 시간은 ti,j이며, 모든 i,j,k에 대해 ti,j=tj,i와 삼각 부등식 ti,j≤ti,k+tk,j를 만족한다.
리포터 한 명은 경기가 진행되는 동안 그 경기장에 머물며 계속 취재해야 한다. 따라서 한 리포터가 두 경기 Ei와 Ej를 모두 취재할 수 있으려면, 한 경기를 끝낸 뒤 다른 경기장으로 이동해 시작 전에 도착할 수 있어야 한다. 즉 si+di+ti,j≤sj 또는 sj+dj+tj,i≤si 가운데 하나가 성립해야 한다. 이 조건을 만족하지 못하는 두 경기는 서로 다른 리포터가 맡아야 한다.
어떤 경기 집합 안의 두 경기를 골라도 한 리포터가 함께 취재할 수 없을 때, 그 집합을 충돌 집합이라고 하자. 경기 정보가 모두 주어졌을 때, 가장 큰 충돌 집합의 크기를 구하는 프로그램을 작성하시오. (딜워스 정리에 의해 이 값은 모든 경기를 취재하는 데 필요한 리포터의 최소 인원과 같다.)
첫째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫째 줄에는 경기의 수 N (1≤N≤1,000)이 주어진다. 둘째 줄에는 각 경기의 시작 시간 s1,s2,…,sN이, 셋째 줄에는 각 경기의 진행 시간 d1,d2,…,dN이 공백으로 구분되어 주어진다. (1≤si,di≤1,000,000)
이어서 N개의 줄이 이동 시간 행렬을 위쪽 삼각 형태로 나타낸다. 그중 i번째 줄에는 N−i+1개의 정수 ti,i,ti,i+1,…,ti,N이 주어진다. (0≤ti,j≤1,000,000, 항상 ti,i=0) 행렬은 대칭이므로 j<i인 값은 ti,j=tj,i로 얻는다.
각 테스트 케이스마다 가장 큰 충돌 집합의 크기 k를 한 줄에 출력한다. 즉 어떤 두 경기도 한 리포터가 함께 취재할 수 없는 경기들의 최대 개수를 출력하면 된다.
(원문제는 그러한 집합에 속한 경기 번호까지 출력하도록 했지만, 그 집합은 여러 가지가 될 수 있어 유일하지 않다. 크기 k는 항상 유일하게 정해지므로 이 값만 출력한다.)