근무표 짜기

NYPC 2021 · 예선

사회적 거리두기를 지키기 위해서 넥슨은 재택 근무를 실시하고 있다. 다만, 각 개발자들에게는 반드시 사무실에 출근하는 날수가 지정되어 있다. 매일매일 게임 개발자들은 출근할 수도, 재택 근무할 수도 있지만, 주어진 기간 동안 자신에게 주어진 출근하는 날수만큼 반드시 출근해야 한다. 또한, 매일매일 사무실에는 최대 근무할 수 있는 사람 수의 제한이 있으며, 이보다 많은 사람이 출근해서 일할 수는 없다.

예를 들어, 총 일하는 날이 55일이고, 44명의 개발자들마다 반드시 출근해야 하는 날이 다음과 같이 주어졌다고 하자. 각 개발자는 정해진 출근 날수보다 적거나 많이 출근할 수 없다.

개발자출근 날수
개발자 11출근 33
개발자 22출근 22
개발자 33출근 55
개발자 44출근 33

만약 55일 동안 매일 최대 출근할 수 있는 사람 수가 차례로 33, 22, 33, 22, 33이라고 하면 다음과 같이 근무표를 짜면 모든 개발자가 조건을 맞출 수 있다.

일자출근하는 개발자
11개발자 11, 개발자 33, 개발자 44
22개발자 11, 개발자 33
33개발자 11, 개발자 33, 개발자 44
44개발자 22, 개발자 33
55개발자 22, 개발자 33, 개발자 44

모든 개발자들의 출근해야 하는 날수와, 매일 사무실에서 근무할 수 있는 최대 사람 수가 주어졌을 때 이 조건을 만족하게 근무표를 작성하는 프로그램을 작성하시오.

입력 형식

첫 줄에는 넥슨에서 일하는 개발자 수를 나타내는 정수 NN과 근무하는 날수를 나타내는 정수 KK가 공백으로 구분되어 주어진다. (1N,K1001 \le N, K \le 100)

둘째 줄에는 NN 개의 정수가 공백으로 구분되어 주어지는데, 이는 차례대로 각 개발자가 출근해야 하는 날수를 나타낸다. 이 수들은 모두 00 이상 KK 이하이다.

셋째 줄에는 KK 개의 정수가 공백으로 구분되어 주어지는데, 이는 차례대로 매일매일 사무실에서 일할 수 있는 사람 수의 최댓값을 나타낸다. 이 수들은 모두 00 이상 NN 이하이다.

항상 주어진 조건을 만족하게 근무표를 작성할 수 있도록 입력이 주어진다.

출력 형식

KK 줄로 출력한다.

ii 번째 줄은 ii 번째 날의 근무표를 나타낸다. 이 줄의 첫 번째 수 xix_iii 번째 날 근무하는 사람 수를 나타낸다. 다음 xix_i 개의 수를 공백으로 구분하여 출력하는데, 이는 이 날 근무하는 개발자를 나타낸다.

각 개발자는 입력받은 순서대로 1,2,,N1, 2, \cdots, N으로 표현하는데 유의하라.

만약, 가능한 답이 여러 가지인 경우 그중 아무거나 하나 출력한다.

예제

입력

4 5 3 2 5 3 3 2 3 2 3

출력

3 3 1 4 2 1 3 3 3 4 1 2 3 2 3 4 2 3

예제 설명

첫 날은 최대 33명이 근무할 수 있으며, 이날 개발자 11, 33, 44가 근무한다.

둘째 날은 최대 22명이 근무할 수 있으며, 이날 개발자 11, 33이 근무한다.

셋째 날은 최대 33명이 근무할 수 있으며, 이날 개발자 11, 33, 44가 근무한다. 이 시점에서 개발자 11은 자신이 출근해야 하는 날을 모두 채웠다.

넷째 날은 최대 22명이 근무할 수 있으며, 이날 개발자 22, 33이 근무한다.

다섯째 날은 최대 33명이 근무할 수 있으며, 이날 개발자 22, 33, 44가 근무한다. 이 시점에서 개발자 22, 33, 44는 모두 자신이 출근해야 하는 날을 모두 채웠다.

따라서 이 근무표는 조건을 만족함을 알 수 있다.

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 42

N,K4N, K \le 4

종류 2: 58

추가적인 제한 조건이 없음.

해설