거짓 카드

각 카드가 아래에 있는 거짓 카드 수가 a_i 이상이라고 주장할 때, 거짓 카드가 정확히 K장이 되도록 N장을 배치한다. 문제에서 정한 순서로 출력하고 불가능하면 -1을 출력한다.

보통6그리디정렬구현수학면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

카드 NN장으로 이루어진 덱이 있다. ii번째 카드에는 "이 카드보다 아래에 있는 카드 중 거짓인 카드가 aia_i장 이상이다"라는 주장이 적혀 있다.

카드를 한 줄로 쌓으면 각 카드의 주장이 실제 상황과 맞는지 따질 수 있다. 주장이 맞는 카드는 참이고, 맞지 않는 카드는 거짓이다. 한 카드가 참인지 거짓인지는 그 카드보다 아래에 놓인 거짓 카드의 개수로만 정해진다.

거짓인 카드가 정확히 KK장이 되도록 NN장을 모두 쌓는 순서를 구하라. 그런 순서가 아예 없을 수도 있다.

입력

첫째 줄에 정수 NNKK가 주어진다. (1N5×1051 \le N \le 5 \times 10^5, 0KN0 \le K \le N)

다음 NN개 줄에 정수 aia_i가 한 줄에 하나씩 주어진다. (0ai5×1050 \le a_i \le 5 \times 10^5)

출력

조건을 만족하는 순서가 여럿일 수 있으므로 답은 다음 규칙으로 하나만 정한다.

카드에 적힌 수 NN개를 오름차순으로 정렬한다. 작은 쪽 NKN-K개를 그 오름차순 그대로 덱의 위쪽에 놓고, 남은 KK개를 내림차순으로 그 아래에 이어 놓는다. 이렇게 만든 덱의 거짓 카드가 정확히 KK장이면 덱의 맨 위 카드부터 맨 아래 카드까지 NN개의 수를 공백으로 구분해 한 줄에 출력한다. 그렇지 않으면 -1을 출력한다.

거짓 카드가 정확히 KK장인 순서가 하나라도 있으면 이 덱이 반드시 그런 순서 중 하나다.

힌트

참과 거짓은 덱의 아래쪽부터 따지면 된다. 위에서 아래로 0, 1, 3, 3, 2를 놓은 덱을 보자.

맨 아래 카드는 2인데 그 아래에는 거짓 카드가 0장이므로 주장이 맞지 않아 거짓이다. 그 위 카드는 3이고 아래에 거짓 카드가 1장뿐이므로 거짓이다. 그 위 카드는 3이고 아래에 거짓 카드가 2장이므로 거짓이다. 그 위 카드는 1이고 아래에 거짓 카드가 3장이므로 참이다. 맨 위 카드는 0이므로 참이다. 이 덱의 거짓 카드는 모두 3장이다.