클링온 전쟁

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

문제

두 클링온 부족 사이에 전쟁이 일어났다. 클링온의 전쟁은 평범한 전쟁이 아니다. 명예롭고 영광스러워야 한다. 명예를 지키려면 양쪽 전력이 정확히 같아야 하고, 영광을 얻으려면 참가하는 전사가 최대한 많아야 한다.

각 부족은 엄격한 위계를 따른다. 부족 전체를 이끄는 지도자가 한 명 있고, 지도자는 직속 부하를 0명 이상 거느린다. 직속 부하는 나이가 많은 순서로 늘어선다. 각 부하도 자기 직속 부하를 0명 이상 거느리고, 그 부하들도 나이가 많은 순서로 늘어선다. 이런 식으로 위계가 이어진다. 전통에 따라 모든 전사는 자기 상관보다 어리다. 또 전사는 저마다 한 가지 전투 방식을 익힌다.

전사 한 명이 지휘하는 하위 부족은 그 전사 자신과 부하, 부하의 부하처럼 직접 또는 간접으로 그에게 속한 전사 전원으로 이루어진다. 두 하위 부족이 정확히 일치한다는 것은 다음 두 조건을 모두 만족한다는 뜻이다. 첫째, 두 하위 부족의 지도자는 전투 방식이 같고 직속 부하 수도 같다. 둘째, 각 지도자의 직속 부하를 나이가 많은 순서로 늘어놓았을 때 첫 번째 부하가 지휘하는 하위 부족끼리 정확히 일치하고, 두 번째 부하가 지휘하는 하위 부족끼리 정확히 일치하며, 나머지 자리도 모두 같은 방식으로 일치한다.

각 부족은 전사 한 명과 그가 지휘하는 하위 부족 전체를 전쟁에 내보낸다. 두 부족이 고른 하위 부족은 정확히 일치해야 하고, 크기는 최대한 커야 한다. 각 부족에서 몇 명이 싸우게 되는가?

입력

첫 줄에 테스트 케이스의 수 TT (1T501 \le T \le 50)가 주어진다.

각 테스트 케이스의 첫 줄에는 두 부족의 크기 MMNN (1M,N100001 \le M, N \le 10000)이 주어진다. 이어지는 MM개 줄에는 첫 번째 부족의 전사 ii를 나타내는 대문자 fif_i와 정수 sis_i가 주어진다. fif_i는 전사 ii의 전투 방식이고, sis_i는 그 전사의 상관 번호이다. 전사 번호는 0부터 시작하고, 전사 0은 언제나 부족의 지도자여서 s0=1s_0 = -1이다. i1i \ge 1인 전사는 0si<i0 \le s_i < i를 만족한다. 전사는 나이가 많은 순서로 주어진다. 그다음 NN개 줄에는 같은 형식으로 두 번째 부족의 전사 jj의 전투 방식 fjf_j와 상관 번호 sjs_j가 주어진다.

출력

각 테스트 케이스마다 두 부족이 각각 내보낼 수 있는 전사 수의 최댓값을 한 줄에 출력한다. 정확히 일치하는 하위 부족 쌍이 하나도 없으면 0을 출력한다.