책 교체

시간 제한1초메모리 제한128 MB

문제

하치오지 교수가 낸 과제의 마감이 내일이다. 과제를 마치려면 학생들은 도서관에 있는 여러 참고 도서의 페이지를 복사해야 한다. 모든 참고 도서는 사서만 들어갈 수 있는 서고에 보관되어 있으므로, 복사본이 필요한 학생은 사서에게 부탁해야 한다. 사서는 서고에서 요청된 책을 꺼내 페이지를 복사한다.

학생들은 카운터 앞에 한 줄로 선다. 한 번에 한 권만 요청할 수 있다. 요청이 처리된 뒤 아직 더 요청할 책이 남아 있으면 그 학생은 줄의 맨 뒤로 간다.

전체 상황은 그림 1(도서관)에 나와 있다.

서고에는 책상 $m$개 $D_1, D_2, \dots, D_m$과 선반 하나가 있으며, 문에서 방 안쪽으로 이 순서대로 일렬로 놓여 있다. 각 책상에는 책을 최대 $c$권까지 올려둘 수 있다. 처음에는 모든 책상이 비어 있으며(모든 책은 선반에 있다), 도서관이 문을 연 뒤에는 새로운 학생이 오지 않는다.

요청을 처리할 때 사서는 $D_1, D_2, \dots, D_m$ 순서로 책을 찾고, 마지막으로 선반을 살펴본다. 책을 찾으면 그것을 꺼내 학생에게 페이지 복사본을 건넨다. 그런 다음 사서는 아래 절차에 따라 그 책을 $D_1$에 놓는다.

  • $D_1$이 가득 차 있지 않으면(현재 올려둔 책이 $c$권 미만이면) 요청된 책을 $D_1$에 올린다.
  • $D_1$이 가득 차 있으면 사서는 다음과 같이 한다.
    1. 요청된 책을 입구에서 가장 가까운, 가득 차지 않은 책상에 잠시 올려둔다. 모든 책상이 가득 차 있으면 선반에 올린다.
    2. $D_1$에서 가장 오랫동안 요청되지 않은 책(가장 오래 사용되지 않은 책)을 꺼낸다.
    3. 그 책을 입구에서 가장 가까운, $D_1$을 제외한 가득 차지 않은 책상에 올린다. $D_1$을 제외한 모든 책상이 가득 차 있으면 선반에 올린다.
    4. 잠시 올려두었던 요청된 책을 다시 가져온다.
    5. 마지막으로 요청된 책을 $D_1$에 올린다.

비용. 책상이나 선반에 접근하는 것만 비용이 든다. 책을 어떤 위치에 올리거나 그 위치에서 꺼낼 때마다 접근 $1$회로 센다. 책상 $D_i$에 접근하는 비용은 $i$이고, 선반에 접근하는 비용은 $m + 1$이다. 그 밖의 동작에는 비용이 들지 않는다. 학생과 사서의 동작을 시뮬레이션하여 모든 요청을 처리하는 데 드는 총비용을 구하라.

비용 계산 예시. 책상이 $3$개이고 각 책상에 최대 $1$권을 올릴 수 있으며, 학생이 두 명이라고 하자. 첫 번째 학생은 책 $60, 61, 62$를, 두 번째 학생은 $70, 60$을 요청한다. 요청이 더 남은 학생은 줄 맨 뒤로 다시 서므로, 책은 $60, 70, 61, 60, 62$ 순으로 처리된다. 먼저 책 $60$을 처리하는 데 $5$의 비용이 든다(선반에서 꺼내는 데 $4$, $D_1$에 올리는 데 $1$). 이어서 $70$을 처리하는 데 $13$, $61, 60, 62$를 처리하는 데 각각 $14, 12, 14$가 들어 총 $5 + 13 + 14 + 12 + 14 = 58$이 된다.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋의 형식은 다음과 같다.

m c n
k1
b11 ... b1k1
...
kn
bn1 ... bnkn

모든 값은 양의 정수이다. $m$은 책상의 개수로 $m \le 10$이다. $c$는 한 책상에 올릴 수 있는 책의 최대 권수로 $c \le 30$이다. $n$은 학생 수로 $n \le 100$이다. $i$번째 학생에 대해 $k_i$는 요청하는 책의 수로 $k_i \le 50$이며, $b_{i1}, \dots, b_{ik_i}$는 요청 순서대로 나열한 책의 ID이다. 모든 책의 ID는 서로 다르고 각 ID는 $100$ 미만이다. 한 학생이 같은 책을 두 번 이상 요청할 수도 있다.

입력의 끝은 공백으로 구분된 세 개의 $0$(0 0 0)만 있는 줄로 나타내며, 이 줄은 데이터셋이 아니다.

출력

각 데이터셋마다 모든 요청을 처리하는 데 드는 총비용을 한 줄에 출력한다.