시간 제한
메모리 제한
시간 제한
2초
메모리 제한
128 MB
어떤 나라에는 여러 마을을 잇는 담장들이 있다. 마을은 점으로, 담장은 두 마을을 잇는 선분으로 나타낸다. 담장끼리는 서로 교차하지 않으며, 모든 담장은 하나로 연결되어 있다. 이 담장들은 나라를 여러 구역으로 나누고, 한 구역에서 이웃한 구역으로 이동하려면 두 구역 사이의 담장을 한 번 넘어야 한다.
몇몇 마을에는 모임 회원이 한 명씩 산다. 회원들은 마을을 통과하지 않고, 마을 바깥의 어느 한 구역에서 만나려고 한다. 한 회원은 자신이 사는 마을에 맞닿은 구역들 중 하나로 바로 나갈 수 있으며, 이때는 담장을 넘지 않는다. 이후 다른 구역으로 이동할 때마다 담장을 하나씩 넘는다.
모임 장소로 선택한 구역에 대해, 모든 회원이 그 구역까지 가기 위해 넘어야 하는 담장 수의 합을 생각하자. 이 합이 최소가 되는 구역을 고르고, 그때의 최소 합을 구하는 프로그램을 작성하라.
첫째 줄에 구역의 개수 M이 주어진다. 경계 바깥의 구역도 하나의 구역으로 세며, 2 <= M <= 200이다.
둘째 줄에 마을의 개수 N이 주어진다. 마을은 1번부터 N번까지 번호가 매겨져 있으며, 2 <= N <= 250이다.
셋째 줄에 모임 회원의 수 L이 주어진다. 1 <= L <= 30이고 L <= N이다.
넷째 줄에는 각 회원이 사는 마을 번호 L개가 오름차순으로 주어진다.
이후 각 구역의 정보가 입력 순서대로 두 줄씩, 모두 2M줄에 걸쳐 주어진다. 각 구역의 첫 줄에는 그 구역의 경계를 이루는 마을 수 I가 주어지고, 다음 줄에는 경계를 따라 만나는 I개의 마을 번호가 주어진다. 마지막 M번째 구역은 전체 바깥 구역이며, 이 구역의 경계 마을들은 반시계 방향 순서로 주어진다. 다른 구역들은 시계 방향 순서로 주어진다.
구역 번호는 입력에 등장한 순서와 같다. 첫 번째로 주어진 구역이 1번이고, 마지막 바깥 구역이 M번이다.
첫째 줄에 모든 회원이 넘어야 하는 담장 수 합의 최솟값을 출력한다.
둘째 줄에 그 최솟값을 만들 수 있는 구역 번호를 출력한다. 가능한 구역이 여러 개라면 그중 아무 구역이나 출력해도 된다.