디스크 조각 모음

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

어떤 보안 운영체제는 특별한 파일 시스템을 사용한다. 디스크 전체는 같은 크기의 클러스터 $N$개로 나뉘어 있으며, 각 클러스터에는 $1$번부터 $N$번까지 번호가 매겨져 있다. 각 파일은 하나 이상의 클러스터를 차지하며, 그 클러스터들은 디스크 어디에나 흩어져 있을 수 있다. 어떤 파일도 차지하지 않은 클러스터는 비어 있는(자유) 클러스터이다. 어떤 파일의 모든 클러스터가 연속된 클러스터에 자연스러운 순서대로 놓여 있을 때 그 파일을 가장 빠르게 읽을 수 있다.

디스크는 일정한 속도로 회전하므로, 디스크 앞쪽에 있는 클러스터가 뒤쪽에 있는 클러스터보다 빠르게 읽힌다. 그래서 $K$개의 파일에는 접근 빈도가 높은 순서대로 $1$번부터 $K$번까지 번호가 매겨진다. $i$번 파일이 차지하는 클러스터 수를 $S_i$라 하면, 최적 배치에서 $1$번 파일은 클러스터 $1, 2, \dots, S_1$을, $2$번 파일은 클러스터 $S_1 + 1, S_1 + 2, \dots, S_1 + S_2$를, 이런 식으로 차례대로 차지한다.

이 배치를 만들기 위해 클러스터 이동 연산을 수행한다. 클러스터 이동 연산 한 번은, 사용 중인 클러스터 하나의 내용을 메모리로 읽어 들여 비어 있는 클러스터 하나에 기록하는 것이다. 그 뒤 원래 클러스터는 비게 되고, 기록한 클러스터는 사용 중이 된다.

가능한 한 적은 횟수의 클러스터 이동 연산으로 파일들을 최적 배치로 만들어라.

입력

입력은 여러 개의 디스크 설명으로 이루어진다. 각 설명의 첫 줄에는 공백으로 구분된 두 정수 $N$과 $K$가 주어진다 ($1 \le K < N \le 100000$). 이어서 $K$개의 줄이 주어지며, 그중 $i$번째 줄은 $i$번 파일을 설명한다. 이 줄은 $i$번 파일의 클러스터 수 $S_i$ ($1 \le S_i \le N - K$)로 시작하고, 그 뒤에 이 파일이 차지하는 클러스터 번호 $S_i$개가 자연스러운 순서대로 이어진다. 각 클러스터 번호는 $1$ 이상 $N$ 이하이다.

한 디스크 설명 안의 클러스터 번호는 모두 서로 다르며, 비어 있는 클러스터는 항상 최소한 하나 존재한다. 입력은 $N$과 $K$ 자리에 $0$ 두 개가 주어지는 줄로 끝난다.

출력

각 디스크 설명마다 정확히 한 줄을 출력한다. 이동이 한 번이라도 필요하면 We need M move operations.를 출력하되, 여기서 $M$은 최적 배치를 만드는 데 필요한 최소 클러스터 이동 연산 횟수이다. 파일들이 이미 최적으로 배치되어 있다면 대신 No optimization needed.를 출력한다.