Little Vova studies programming in an elite school. Vova and his classmates are supposed to write n progress tests, for each test they will get a mark from 1 to p. Vova is very smart and he can write every test for any mark, but he doesn't want to stand out from the crowd too much. If the sum of his marks for all tests exceeds value x, then his classmates notice how smart he is and start distracting him asking to let them copy his homework. And if the median of his marks will be lower than y points (the definition of a median is given in the notes), then his mom will decide that he gets too many bad marks and forbid him to play computer games.

Vova has already wrote k tests and got marks a_1, ..., a_{k}. He doesn't want to get into the first or the second situation described above and now he needs to determine which marks he needs to get for the remaining tests. Help him do that.


-----Input-----

The first line contains 5 space-separated integers: n, k, p, x and y (1 ≤ n ≤ 999, n is odd, 0 ≤ k < n, 1 ≤ p ≤ 1000, n ≤ x ≤ n·p, 1 ≤ y ≤ p). Here n is the number of tests that Vova is planned to write, k is the number of tests he has already written, p is the maximum possible mark for a test, x is the maximum total number of points so that the classmates don't yet disturb Vova, y is the minimum median point so that mom still lets him play computer games.

The second line contains k space-separated integers: a_1, ..., a_{k} (1 ≤ a_{i} ≤ p) — the marks that Vova got for the tests he has already written.


-----Output-----

If Vova cannot achieve the desired result, print "-1".

Otherwise, print n - k space-separated integers — the marks that Vova should get for the remaining tests. If there are multiple possible solutions, print any of them.


-----Examples-----
Input
5 3 5 18 4
3 5 4

Output
4 1

Input
5 3 5 16 4
5 5 5

Output
-1



-----Note-----

The median of sequence a_1, ..., a_{n} where n is odd (in this problem n is always odd) is the element staying on (n + 1) / 2 position in the sorted list of a_{i}.

In the first sample the sum of marks equals 3 + 5 + 4 + 4 + 1 = 17, what doesn't exceed 18, that means that Vova won't be disturbed by his classmates. And the median point of the sequence {1, 3, 4, 4, 5} equals to 4, that isn't less than 4, so his mom lets him play computer games.

Please note that you do not have to maximize the sum of marks or the median mark. Any of the answers: "4 2", "2 4", "5 1", "1 5", "4 1", "1 4" for the first test is correct.

In the second sample Vova got three '5' marks, so even if he gets two '1' marks, the sum of marks will be 17, that is more than the required value of 16. So, the answer to this test is "-1".

Difficulty: interview

Starter code:

Solutions:
def read_data():
    n, k, p, x, y = map(int, input().split())
    As = list(map(int, input().split()))
    return n, k, p, x, y, As

def solve(n, k, p, x, y, As):
    '''median (As + Bs) >= y
    sum(As + Bs) <= x
    1 <= Bi <= p
    '''
    middle = n // 2
    As.sort(reverse=True)
    sumA = sum(As)
    minSum = sumA + 1 * (n - k)
    if minSum > x:
        return ['-1']
    num_a_over_y = len([1 for a in As if a >= y])
    if num_a_over_y > middle:
        return ['1'] * (n - k)
    min_num_y = middle + 1 - num_a_over_y
    if min_num_y > n - k:
        return ['-1']
    minSum2 = sumA + min_num_y * y + (n - k - min_num_y) * 1
    if minSum2 > x:
        return ['-1']
    return [str(y)] * min_num_y + ['1'] * (n - k - min_num_y)

def __starting_point():
    n, k, p, x, y, As = read_data()
    seq = solve(n, k, p, x, y, As)
    print(' '.join(seq))
__starting_point()

n,k,p,x,y = map(int, input().split())
written = sorted([int(x) for x in input().split()])

# very smart
if sum(written) + (n - k) > x:
    print(-1)
    return

answer = []
for i in range(n-k):
    
    median_index = (len(written))//2
    if len(written)%2 == 0:
        try:
            test = written[median_index-1]
        except IndexError:
            test = 0

        if  test < y:
            written.append(y)
            answer.append(y)
        else:
            written.append(1)
            answer.append(1)
    elif written[median_index] < y:
        written.append(y)
        answer.append(y)
    else:
        written.append(1)
        answer.append(1)
    written.sort()
    

median_index = len(written)//2
if sum(written) > x or written[median_index] < y:
    print(-1)
    return

print(' '.join(str(x) for x in answer))

from statistics import median

N, K, P, X, Y = list(map(int, input().split()))
A = list(map(int, input().split()))

lt = 0

for i in range(K):
    if A[i] < Y:
        lt += 1

ans = [1] * min(N // 2 - lt, N - K)
while len(ans) < N - K:
    ans.append(Y)

if sum(ans+A) <= X and median(ans+A) >= Y:
    print(' '.join(map(str, ans)))
else:
    print('-1')




n, k, p, x, y=map(int, input().split())
s=list(map(int, input().split()))
s=sorted(s)
if p<y:
    print(-1)
else: 
    kol=0
    summ=0
    for i in s: #������� ����� � ���������� ������� ��� y
        summ+=i
        if i>=y:
            kol+=1
    if k-kol>=n//2+1 or summ > x: #���� ������� �������� ������ y
        print(-1)#, '!1')
    elif kol>=n//2+1: #���� ������� �������� ������ y
        if summ+n-k <=x:
            print('1 '*(n-k))
        else:
            print(-1)#, '!2')
    else: #���������� � ������� �����
        #print('!!!', summ, y*(n//2+1-kol), n-k-n//2-1+kol, kol)
        if summ+y*(n//2+1-kol)+(n-k-n//2-1+kol)>x:
            print(-1)#, '!3')
        else:
            for i in range(n//2+1-kol):
                print(y, end=' ')
            for i in range(n-k-n//2-1+kol):
                print('1', end = ' ')
            

from bisect import insort

tot, wr, ma, mas, mis = map(int, input().split())
s = sorted(map(int, input().split()))
res = []
while wr < tot:
    if not s or (s[wr // 2] < mis or s[wr // 2 - 1] < mis):
        res.append(mis)
        insort(s, mis)
    else:
        res.append(1)
        insort(s, 1)
    wr += 1
if sum(s) <= mas and s[tot // 2] >= mis:
    print(' '.join(map(str, res)))
else:
    print(-1)

n, k, p, x, y = list(map(int, input().split()))
a = list(map(int, input().split()))
a.sort()

marks = []

if (n > 1):
    while (len(a) < n) and (len(a) <= (n+1)//2-2 or (n+1)//2-2 < 0 or a[(n+1)//2-2] >= y):
        a = [1] + a
        marks.append(1)
else:
    marks = [y]
    a = [y]

marks += [y] * (n - len(a))
a += [y] * (n - len(a))
a.sort()

if (sum(a) > x or a[(n+1)//2-1] < y):
    print(-1)
else:
    print(" ".join(map(str, marks)))



def main():
    n, k, p, x, y = [int(x) for x in input().split()]
    a = [int(x) for x in input().split()]

    median = int((n + 1) / 2)
    less = 0
    for i in range(len(a)):
        if a[i] < y:
            less += 1

    #print(less, median)
    if less >= median:
        print(-1)
        return
        
    fillOne = min(median - less - 1, n - k)
    if sum(a) + fillOne*1 + (n - k - fillOne)*y > x:
        print(-1)
        return


    for i in range(fillOne):
        print(1, end=' ')
    for i in range(n - k - fillOne):
        print(y, end=' ')

def __starting_point():
    main()
__starting_point()

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

(n, k, p, x, y) = (int(i) for i in input().split())
a = [ int(i) for i in input().split() ]

a_l = 0
a_g = 0

for i in a:
    if i < y :
        a_l += 1
    else:
        a_g += 1


if a_l > (n-1)/2:
    print(-1)
elif a_g > (n-1)/2 :
    sum_a = sum(a) + n-k
    if (sum_a <= x):
        for i in range(n-k):
            print(1, end=' ')
        print()
    else :
        print(-1)
else:
    sum_a = sum(a)+int((n+1)/2-a_g)*y+(n-1)/2-a_l
    if (sum_a <=x ):
        for i in range(int((n-1)/2)-a_l):
            print(1, end=' ')
        for i in range(int((n+1)/2)-a_g):
            print(y, end=' ')
        print()
    else:
        print(-1)







def main():
    n, k, p, x, y = list(map(int, input().split()))
    L = list(map(int, input().split()))
    [L.append(y) for _ in range(n-k)]
    cnt = 0
    for i in range(n):
        if L[i] >= y:
            cnt += 1
    m = (n+1)/2
    for i in range(k, n):
        if cnt > m:
            L[i] = 1
            cnt -= 1
    if sum(L) > x or cnt < m:
        print(-1)
    else:
        print(" ".join(map(str, L[k:])))


def __starting_point():
    main()

__starting_point()

n,k,p,x,y=(int(x) for x in input().split())
a = [int(x) for x in input().split()]

if n == 1:
    if y > x:
        print(-1)
    else:
        print(y)
    return

a.sort()
med_pos = n // 2
s = sum(a)
if (len(a) > med_pos) and (a[med_pos] < y):
    print(-1)
    return

if s + (n-k) > x:
    print(-1)
    return

ind = -1
for i in range(len(a)):
    if a[i] >= y:
        ind = i
        break

if ind == -1:
    ind = len(a)

left = min(n - k, med_pos - ind)
right = max(0, n - k - left)

if s + left + y * right > x:
    print(-1)
    return

for i in range(left):
    print(1, end = ' ')
for i in range(right):
    print(y, end = ' ')

n, k, p, x, y = (map(int, input().split()))
V = list(map(int, input().split()))


# n, k, p, x, y = 9, 7, 2, 14, 1
# V = list(map(int, "2 2 2 1 1 2 2".split()))

suma = sum(V)

smaller = 0
for num in V:
	if num < y:
		smaller += 1


if smaller >= (n+1)/2:
	print("-1")
else:
	no1 = (n+1)/2 - smaller - 1
	no1 = int(no1)
	noy = n - k - no1

	# print("SMALLER: {} NO1: {} NOY: {}".format(smaller, no1, noy))
	
	if(no1 < 0):
		noy += no1
		no1 = 0
	elif(noy < 0):
		no1 += noy
		noy = 0

	if (suma + no1 + y*noy > x):
		print("-1")
	else:
		print("1 " * no1 + ("{} ".format(y)) * noy)

n, k, p, x, y = [int(token) for token in input().split()]
l = [int(token) for token in input().split()]

k_lower = sum(1 for a in l if a < y)
k_upper = k - k_lower

ik_lower = int((n - 1) / 2) - k_lower
ik_upper = int((n + 1) / 2) - k_upper

if ik_lower < 0:
    print('-1')
elif ik_upper < 0:
    if ik_lower + ik_upper + sum(l) > x:
        print('-1')
    else:
        l = [1] * (ik_lower + ik_upper)

        l_string = (str(a) for a in l)
        print(' '.join(l_string))
else:
    if ik_lower + y * ik_upper + sum(l) > x:
        print('-1')
    else:
        il_lower = [1] * ik_lower
        il_upper = [y] * ik_upper

        l = il_lower + il_upper

        l_string = (str(a) for a in l)
        print(' '.join(l_string))

s=input()
n,k,p,x,y=s.split()
n,k,p,x,y=int(n),int(k),int(p),int(x),int(y)
s=input()
a=[]
for i in s.split():
    a.append(int(i))
sum=0
l=0
r=0
for i in a:
    sum=sum+i
    if i>=y: r+=1
    else: l+=1
flag=1
b=[]
if sum>=x or l>n//2 or y>p:
    flag=0
else:
    left=x-sum
    for i in range(0,n-k):
        if r<n//2+1:
            b.append(y)
            r+=1
        else: b.append(1)
        left-=b[i]
    if left<0 or r<n//2+1:
        flag=0

if flag==1:
    for i in range(0,n-k-1):
        print(b[i],end=' ')
    print(b[n-k-1])
else :
    print(-1)
        


# n = list(map(int,unput().split()))
def print_lst(lst):
    print(" ".join(map(str,lst)))

n,k,p,x,y = list(map(int,input().split()))
pi = list(map(int,input().split())) 

spi = sum(pi)
res = []
c_lm = 0
c_hm = 0
for el in pi:
    if el < y:
        c_lm += 1
    else:
        c_hm += 1
n_hm = n//2+1 - c_hm
n_lm = n//2 -  c_lm
for i in range(n-k):
    
    if n_hm > 0:
        res += [y]
        pi += [y]
        n_hm -= 1
    elif n_lm > 0:
        res += [1]
        pi += [1]
        n_lm -= 1

pis = sorted(pi)
if sum(pis) > x:
    print(-1)
elif pis[len(pis)//2] < y:
    print(-1)
else:
    print_lst(res)



3.4

v = input().split()
n, k, p, x, y = int(v[0]), int(v[1]), int(v[2]), int(v[3]), int(v[4])

if p < y:
	print('-1')
	return

b = list(map(int, input().split()))
b.sort()

cur = sum(b)

if cur+n-k > x:
	print(-1)
	return

median = (n+1) // 2

lower_bound = len(b)-1

while lower_bound >= 0 and b[lower_bound] >= y:
	lower_bound -= 1
lower_bound += 2

max_count_of_ones = median - lower_bound
if max_count_of_ones < 0:
	print(-1)
	return

if max_count_of_ones + y*(n-k-max_count_of_ones)+cur > x:
	print(-1)
	return

for i in range(min(n-k, max_count_of_ones)):
	print('1', end=' ')
for i in range(min(abs(n-k-max_count_of_ones), n-k-max_count_of_ones)):
	print(y, end=' ')


v = input().split()
n, k, p, x, y = int(v[0]), int(v[1]), int(v[2]), int(v[3]), int(v[4])

b = list(map(int, input().split()))
b.sort()

lower_bound = len(b)-1

while lower_bound >= 0 and b[lower_bound] >= y:
	lower_bound -= 1
lower_bound += 2

max_count_of_ones = (n+1) // 2 - lower_bound
total = min(n-k, max_count_of_ones) + sum(b)

if n-k-max_count_of_ones > 0:
	total += y*(n-k-max_count_of_ones)

if total > x or max_count_of_ones < 0 or p < y:
	print(-1)
	return

for i in range(min(n-k, max_count_of_ones)):
	print('1', end=' ')
for i in range(min(abs(n-k-max_count_of_ones), n-k-max_count_of_ones)):
	print(y, end=' ')


n, k, p, x, y = list(map(int, input().split()))

b = list(map(int, input().split()))

lower_bound = 1
for i in range(k):
	if b[i] < y: lower_bound += 1

ans = [1]*min((n+1) // 2 - lower_bound, n-k)

while len(ans) < n-k:
	ans.append(y)

if sum(ans+b) <= x and (n+1) // 2 - lower_bound >= 0 and p >= y:
	print(' '.join(map(str, ans)))
else:
	print('-1')


n, k, p, x, y = [int(k) for k in input().split()]
scores = [int(k) for k in input().split()] #k numbers here
s = sum(scores)
number_needed = (n-1)/2
B = x - s
done = False

while not done:
    num_above = 0
    num_below = 0
    for i in scores:
        if i >= y:
            num_above +=1
        else:
            num_below += 1
    num_needed_above = int(number_needed + 1 - num_above)
    num_needed_below = int(number_needed - num_below)
    if num_needed_below < 0:
        print(-1)
        break
    if num_needed_above  < 0 :
        num_needed_above = 0
        num_needed_below = n - k
    #print(num_needed_above, num_needed_below)
    rem_sum = y*num_needed_above + 1*num_needed_below
    if rem_sum <= B:
        for i in range(num_needed_below):
            print(1, end = " ")
        for i in range(num_needed_above):
            print(y, end = " ")
        #print(y, num_needed_above,num_needed_below, rem_sum)
        done = True
    else:
        y = y+1
        if y > p:
            print(-1)
            break
    #print(num_needed_above,num_needed_below, rem_sum)

n,k,p,x,y = map(int, input().split())
A = list(map(int, input().split()))
cnt = n//2+1
for i in A :
    if i >= y :
        cnt -= 1
cnt = max(cnt, 0)
if n-k < cnt :
    print(-1)
else :
    B = [y]*cnt + [1]*(n-k-cnt)
    if sum(A) + sum(B) > x :
        print(-1)
    else :
        for i in B :
            print(i, end = ' ')