두 생산 라인의 박스와 장난감을 순서대로 짝지어 같은 종류 쌍을 가장 많이 만듭니다.
보통6동적 계획법아직 제출이 없습니다시간 제한5초메모리 제한512 MB조립 라인이 두 개인 공장을 운영한다. 첫 번째 라인은 상자를 만들고, 두 번째 라인은 그 상자에 담을 장난감을 만든다. 상자 종류마다 담을 수 있는 장난감 종류가 하나로 정해져 있고, 그 반대도 마찬가지다.
처음에 첫 번째 라인에서 상자 하나를, 두 번째 라인에서 장난감 하나를 집는다. 상자와 장난감을 하나씩 들고 있는 상태에서 다음 중 하나를 할 수 있다.
상자는 만들어진 순서대로 집고, 장난감도 만들어진 순서대로 집는다. 두 라인의 생산 순서를 알고 있을 때, 손님에게 보낼 수 있는 포장된 장난감의 최대 개수를 구한다.
두 라인은 상자와 장난감을 아주 많이 만든다. 다만 한 종류를 오랫동안 만든 뒤에야 다른 종류로 바꾸므로, 생산 순서는 같은 종류가 연달아 이어지는 구간 단위로 주어진다.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 세 줄로 이루어진다.
첫째 줄에 두 정수 N과 M이 주어진다. 둘째 줄에 2N개의 정수 a1, A1, a2, A2, ..., aN, AN이 주어진다. 셋째 줄에 2M개의 정수 b1, B1, b2, B2, ..., bM, BM이 주어진다.
첫 번째 라인은 종류가 A1인 상자 a1개를 만들고, 이어서 종류가 A2인 상자 a2개를 만들며, 마지막으로 종류가 AN인 상자 aN개를 만든다. 두 번째 라인도 같은 방식으로 종류가 B1인 장난감 b1개부터 종류가 BM인 장난감 bM개까지 만든다. 장난감은 종류 번호가 같은 상자에만 담을 수 있다.
인접한 두 구간의 종류 번호가 같을 수도 있다.
각 테스트 케이스마다 "Case #x: y" 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 손님에게 보낼 수 있는 포장된 장난감의 최대 개수다.