상자 공장 (라지)

구간별로 압축된 상자와 장난감 목록에서 종류가 같은 쌍을 순서대로 맞춰 출고량을 최대로 구합니다.

보통7동적 계획법문자열 매칭아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

공장에 조립 라인이 두 개 있다. 첫 번째 라인은 상자를 만들고, 두 번째 라인은 그 상자에 담을 장난감을 만든다. 상자와 장난감에는 종류 번호가 붙어 있고, 종류 번호가 같은 상자와 장난감만 짝이 된다.

먼저 첫 번째 라인에서 상자를 하나 집고, 두 번째 라인에서 장난감을 하나 집는다. 그다음부터는 아래 동작을 원하는 만큼 반복한다.

  • 들고 있는 상자를 버리고 다음 상자를 집는다.
  • 들고 있는 장난감을 버리고 다음 장난감을 집는다.
  • 상자와 장난감의 종류가 같으면 장난감을 상자에 넣어 고객에게 보내고, 다음 상자와 다음 장난감을 집는다.

상자는 만들어진 순서대로만 집을 수 있고, 장난감도 마찬가지다. 두 라인이 무엇을 어떤 순서로 만드는지는 미리 알고 있다. 고객에게 보내는 포장 완성품의 개수를 최대로 하는 전략을 세워서, 그 최대 개수를 구하라.

두 라인은 상자와 장난감을 아주 많이 만든다. 다만 한 종류를 오랫동안 만든 뒤에 다른 종류로 바꾸는 식이다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다.

각 테스트 케이스의 첫 줄에는 두 정수 NNMM이 주어진다. 다음 줄에는 2N2N개의 정수 a1,A1,a2,A2,,aN,ANa_1, A_1, a_2, A_2, \dots, a_N, A_N이 주어지고, 그다음 줄에는 2M2M개의 정수 b1,B1,b2,B2,,bM,BMb_1, B_1, b_2, B_2, \dots, b_M, B_M이 주어진다.

첫 번째 라인은 종류가 A1A_1인 상자를 a1a_1개 만들고, 이어서 종류가 A2A_2인 상자를 a2a_2개 만들며, 마지막으로 종류가 ANA_N인 상자를 aNa_N개 만든다. 두 번째 라인도 같은 방식으로 종류가 B1B_1인 장난감 b1b_1개부터 종류가 BMB_M인 장난감 bMb_M개까지 만든다. 이웃한 두 구간의 종류 번호가 같을 수도 있다.

제한

  • 1T1001 \le T \le 100
  • 1ai,bi10161 \le a_i, b_i \le 10^{16}
  • 1Ai,Bi1001 \le A_i, B_i \le 100
  • 1N,M1001 \le N, M \le 100

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 고객에게 보낼 수 있는 포장 완성품의 최대 개수다.