대학 순위

N개 대학에 대한 M개 순위가 주어질 때, 앞선 대학이 모든 순위에서 다음 대학보다 앞서는 최장 수열의 길이를 구한다.

보통6동적 계획법정렬누적 합아직 제출이 없습니다시간 제한8초메모리 제한512 MB

문제

한 평가 기관이 학과마다 순위표를 하나씩 발표한다. 조사 대상 대학은 모두 같은 MM개 학과를 두고 있고, 각 학과 순위표는 NN개 대학을 1등부터 꼴찌까지 빠짐없이 줄 세운다.

순위표가 여러 개라서 두 대학의 우열을 가리지 못하는 경우가 자주 생긴다. 그래서 이 기관은 절대 우위라는 관계를 쓴다. 대학 XXMM개 순위표 전부에서 대학 YY보다 앞에 있으면 XXYY보다 절대 우위에 있다고 한다.

대학 XX, YY, ZZ 세 곳과 CS, EE, FLS 세 학과가 있고 순위표가 다음과 같다고 하자.

  • CS: XX, YY, ZZ
  • EE: XX, ZZ, YY
  • FLS: ZZ, XX, YY

XX는 세 순위표 모두에서 YY보다 앞에 있으므로 YY보다 절대 우위에 있다. 반면 XXZZ는 우열을 가릴 수 없다. CS에서는 XX가 앞서고 FLS에서는 ZZ가 앞선다.

모든 i<ji < j에 대해 UiU_iUjU_j보다 절대 우위에 있는 대학 U1,,UkU_1, \dots, U_k를 찾으려고 한다. 가능한 kk의 최댓값을 구하여라. 대학은 번호로 주어진다.

입력

첫째 줄에 테스트 케이스의 수 CC가 주어진다 (1C101 \le C \le 10).

각 테스트 케이스의 첫째 줄에는 대학 수 NN과 학과 수 MM이 주어진다 (1N,M4001 \le N, M \le 400). 이어서 MM개 줄이 주어진다. 그중 kk번째 줄에는 kk번째 학과의 순위가 1등부터 차례로 NN개의 정수로 주어지며, 이 NN개의 수는 11부터 NN까지의 순열이다. 대학 UU가 같은 줄에서 대학 VV보다 앞에 나오면 kk번째 학과는 UUVV보다 낫다.

출력

각 테스트 케이스마다 한 줄에 kk의 최댓값을 입력 순서대로 출력한다. 출력은 모두 CC줄이고, 불필요한 공백은 출력하지 않는다.