시간 제한
메모리 제한
시간 제한
2초
메모리 제한
128 MB
각 원자는 여러 에너지 상태 중 하나에 있을 수 있으며, 각 상태는 원자가 그 상태에서 가지는 에너지로 표현된다. 원자가 높은 에너지 상태에서 낮은 에너지 상태로 변하면 두 상태의 에너지 차이만큼의 에너지를 가진 양성자 하나를 방출한다. 반대로 낮은 에너지 상태에서 높은 에너지 상태로 변하려면 같은 크기의 에너지를 가진 양성자 하나를 흡수해야 한다.
과학자들은 오랜 연구 끝에 이 원자의 모든 에너지 상태의 값을 알아냈고, 양성자가 가질 수 있는 에너지의 종류도 모두 알아냈다. 이 문제에서 다루는 원자는 한 번 상태가 변할 때 양성자 하나만 흡수하거나 방출한다. 또한 같은 상태를 반복해서 지나는 경로를 제외하면, 임의의 두 에너지 상태 사이의 상태 변화 경로는 최대 한 가지뿐이다. 따라서 에너지 상태를 정점으로 보고, 한 번의 상태 변화가 가능한 두 상태를 간선으로 연결하면 그래프는 숲이 된다.
과학자들은 필요한 만큼의 원자와 양성자를 준비한 뒤, 각 원자의 에너지 상태를 조절하고 원자들을 컨테이너에 넣어 관찰한다. 컨테이너 안의 두 원자가 같은 에너지 상태에 있거나, 한 원자가 양성자 하나를 흡수하거나 방출해서 다른 원자와 같은 에너지 상태가 될 수 있다면 그 컨테이너는 위험하다.
컨테이너가 안전하도록 원자들의 에너지 상태를 고르면서, 컨테이너 안 원자들의 에너지 합을 최대화하려고 한다. 각 에너지 상태의 값과 양성자가 가질 수 있는 에너지들이 주어질 때, 가능한 최대 에너지 합을 구하라.
첫째 줄에 두 정수 N, M (1 <= N <= 200, 1 <= M <= 200)이 주어진다.
다음 N개의 줄에는 원자의 각 에너지 상태의 에너지가 하나씩 주어진다. 서로 다른 두 상태의 에너지는 같지 않다.
다음 M개의 줄에는 양성자가 가질 수 있는 에너지가 하나씩 주어진다. 모든 에너지는 1,000,000 이하의 자연수이다.
가능한 에너지 합의 최댓값을 출력한다.