Let A = {a1, a2, ..., an} be any permutation of the first n natural numbers {1, 2, ..., n}. You are given a positive integer k and another sequence B = {b1, b2, ..., bn}, where bi is the number of elements aj in A to the left of the element at = i such that aj ≥ (i + k).

For example, if n = 5, a possible A is {5, 1, 4, 2, 3}. For k = 2, B is given by {1, 2, 1, 0, 0}. But if k = 3, then B = {1, 1, 0, 0, 0}.

For two sequences X = {x1, x2, ..., xn} and Y = {y1, y2, ..., yn}, let i-th elements be the first elements such that xi ≠ yi. If xi < yi, then X is lexicographically smaller than Y, while if xi > yi, then X is lexicographically greater than Y.

Given n, k and B, you need to determine the lexicographically smallest A.

Input

The first line contains two space separated integers n and k (1 ≤ n ≤ 1000, 1 ≤ k ≤ n). On the second line are n integers specifying the values of B = {b1, b2, ..., bn}.

Output

Print on a single line n integers of A = {a1, a2, ..., an} such that A is lexicographically minimal. It is guaranteed that the solution exists.

Examples

Input

5 2
1 2 1 0 0


Output

4 1 5 2 3 

Input

4 2
1 0 0 0


Output

2 3 1 4

Source: codeforces | Difficulty: MEDIUM_HARD
Tags: Greedy algorithms


Solutions:
s = input()
l = s.split()
n = int(l[0])
k = int(l[1])
s = input()
l = s.split()
b = [-1]
for i in range(1, n + 1):
	b.append(int(l[i - 1]))
for i in range(1, n + 1):
	j = 1
	while b[j] != 0:
		j += 1
	b[j] -= 1
	print(j, end=' ')
	for t in range(1, n + 1):
		if j - k >= t:
			b[t] -= 1


u = input
(n, k) = map(int, u().split())
M = [int(i) for i in u().split()]
m = 0
for j in range(n):
	for p in range(n):
		if 0 == M[p]:
			print(p + 1, end=' ')
			break
	for l in range(p + 1 - k):
		M[l] -= 1
	M[p] -= 1


(n, k) = map(int, input().split())
b = list(map(int, input().split()))
taken = [False for i in range(n + 2)]
a = []
for i in range(n):
	has = -1
	for j in range(1, n + 1):
		if not taken[j] and b[j - 1] == 0:
			has = j
			break
	a.append(has)
	taken[has] = True
	for j in range(1, has - k + 1):
		b[j - 1] -= 1
print(*a)


def main():
	(n, k) = map(int, input().split())
	a = list(map(int, input().split()))
	b = [0] * n
	for i in range(n):
		l = -1
		for j in range(n):
			if a[j] == 0:
				l = j
				b[i] = j + 1
				a[j] -= 1
				break
		for j in range(n):
			if l >= j + k:
				a[j] -= 1
	print(*b)
	return
main()