재미있는 카드 게임
시간 제한1초메모리 제한128 MB
안나는 카드를 임의로 지울 수 있고 브루노는 위아래에서만 지울 수 있을 때, 두 사람이 만들 수 있는 가장 긴 공통 부분 배열의 길이를 구한다.
문제
부터 까지의 정수 중 하나가 적힌 카드가 많이 있다. 안나(Anna)와 브루노(Bruno)는 이 카드들로 다음과 같은 게임을 한다.
안나는 장, 브루노는 장의 카드로 이루어진 더미를 가지고 있다. 안나는 자신의 장 중에서 임의의 몇 장(장이어도 된다)을 골라 버리고 새로운 더미를 만든다. 브루노는 자신의 장짜리 더미에서 맨 위에서부터 몇 장(장이어도 된다)과 맨 아래에서부터 몇 장(장이어도 된다)을 버리고 새로운 더미를 만든다. 단, 카드를 버릴 때 남은 카드의 순서는 바꾸지 않는다.
이렇게 만든 두 더미가 서로 일치하면, 그 더미에 들어 있는 카드의 장수가 두 사람의 점수가 된다. 여기서 두 더미가 일치한다는 것은 두 더미에 들어 있는 카드의 장수 이 같고, 위에서 번째 () 카드에 적힌 정수가 모두 같다는 뜻이다.
예를 들어 안나가 위에서부터 가 적힌 5장의 더미를, 브루노가 위에서부터 이 적힌 4장의 더미를 가지고 있다고 하자. 이때 안나가 가 적힌 카드를 버리고 브루노가 맨 위의 과 맨 아래의 을 버리면, 두 더미는 모두 위에서부터 가 되어 일치한다. 남은 더미의 카드는 2장이므로 두 사람은 점수 를 얻는다.
두 사람이 얻을 수 있는 점수의 최댓값을 구하려고 한다. 안나와 브루노가 가진 카드 더미의 정보가 주어질 때, 점수의 최댓값을 구하는 프로그램을 작성하여라.
입력
표준 입력으로 다음 데이터가 주어진다.
- 첫째 줄에 두 정수 , 가 공백으로 구분되어 주어진다.
- 둘째 줄에 개의 정수가 공백으로 구분되어 주어진다. 번째 정수 ()는 안나의 더미에서 위에서 번째 카드에 적힌 정수이다.
- 셋째 줄에 개의 정수가 공백으로 구분되어 주어진다. 번째 정수 ()는 브루노의 더미에서 위에서 번째 카드에 적힌 정수이다.
제한
- 카드에 적힌 정수는 이상 이하이다.
출력
점수의 최댓값을 정수 하나로 한 줄에 출력한다.