밥이 가진 카드와 테이블에 이미 놓인 카드가 주어질 때, 테이블의 모든 카드가 그룹과 연속으로 분할 가능하도록 유지하면서 밥이 낼 수 있는 카드 수의 최댓값을 구한다.
밥은 루미큐브 게임을 즐겨한다. 밥이 가진 카드와 테이블에 이미 내어져 있는 카드들을 모두 알고 있을 때, 밥이 낼 수 있는 카드 개수의 최댓값을 출력하시오.
루미큐브의 게임 규칙은 다음과 같다.
첫 줄에는 밥이 가지고 있는 카드의 개수 n이 주어진다. (1 ≤ n ≤ 28)
둘째 줄에는 밥이 가지고 있는 카드에 대한 정보가 사이에 공백을 두고 주어진다.
셋째 줄에는 테이블에 놓인 카드의 개수 m이 주어진다. (0 ≤ m ≤ 28-n)
넷째 줄에는 테이블에 놓인 카드에 대한 정보가 사이에 공백을 두고 주어진다.
카드들에 대한 정보는 색(char형)숫자(int형)으로 주어진다. 예시 입출력을 참고하여라.
단, 테이블에 놓인 카드들은 루미큐브세트들로 구성되어 있음이 보장되며, 동일한 카드는 두 번 이상 입력되지 않는다.
밥이 낼 수 있는 카드 개수의 최댓값을 출력한다.