보물 사냥꾼

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

문제

보물 사냥꾼으로 산 지 오래됐다. 함정을 해제하고 현지 주민의 눈을 피해 물건을 챙겨 나오는 일은 이제 손에 익었다. 정작 진땀이 나는 순간은 탐험이 끝난 다음이다. 전리품을 어떻게 나눌지를 두고 매번 살벌한 말다툼이 벌어진다. 같이 일한 사람의 성격은 제각각이고, 보물 하나가 실제로 얼마짜리인지는 아무도 의견이 같지 않다. 전리품을 최대한 공평하게 나누는 방법을 찾아야 한다.

입력

입력은 데이터 집합 여러 개로 이루어진다. 집합은 최소 1개, 최대 100개이고, 집합 사이에 빈 줄은 없다.

데이터 집합 하나는 다섯 부분으로 이루어진다.

  1. 시작 줄. START만 적힌 한 줄이다.
  2. 보물의 개수. 정수 tt 하나가 적힌 한 줄이고, 1t81 \le t \le 8이다.
  3. 사냥꾼의 수. 정수 hh 하나가 적힌 한 줄이고, 1h61 \le h \le 6이다.
  4. 보물 가치 목록. hh개의 줄이고, 첫 줄이 사냥꾼 1번, 둘째 줄이 사냥꾼 2번과 같이 입력 순서대로 대응한다. 각 줄에는 그 사냥꾼이 매긴 추정 가치를 보물 1번부터 보물 tt번까지 순서대로 공백으로 구분해 적는다. 모든 사냥꾼이 모든 보물에 값을 매긴다. 추정 가치는 1000010000보다 작은 양의 정수다.
  5. 끝 줄. END만 적힌 한 줄이다.

출력

데이터 집합마다 출력 집합을 하나씩 출력한다. 출력 집합 사이에는 빈 줄을 정확히 하나 넣는다.

출력 집합은 사냥꾼 수만큼의 줄로 이루어지고, 줄 순서는 입력에 나온 사냥꾼 순서와 같다. 각 줄에는 그 사냥꾼이 받은 보물의 번호를 오름차순으로 적고, 이어서 그 보물의 가치를 그 사냥꾼 기준으로 모두 더한 값을 적는다. 한 줄의 값은 모두 공백으로 구분한다. 보물을 하나도 받지 못한 사냥꾼의 줄에는 합계인 0만 적는다.

보물은 가장 공평하게 나눈다. 모든 보물을 빠짐없이 나누고, 보물 하나는 사냥꾼 한 명에게만 준다. 가장 공평한 분배란 각 사냥꾼이 자기 기준으로 계산한 가치 합의 최댓값과 최솟값의 차이가 가장 작은 분배다. 즉 가장 많이 챙겼다고 느끼는 사냥꾼과 가장 적게 챙겼다고 느끼는 사냥꾼의 차이를 최소로 만든다.

공평한 분배가 여러 가지인 입력은 주어지지 않는다.