nums = list(input().split())
k = int(nums[-1])
nums = [int(i) for i in nums[:-1]]
nums = sorted(nums)
print(' '.join(str(i) for i in nums[:k]))
def adjust_heap(A,n,i):
while True:
left = (i<<1)+1
right = (i<<1)+2
min_index = i
if left<n and A[left]<A[min_index]:
min_index = left
if right<n and A[right]<A[min_index]:
min_index = right
if min_index!=i:
temp = A[min_index]
A[min_index] = A[i]
A[i]= temp
i = min_index
else:
break
def get_k_min(A,k,n):
for i in range(n/2-1,-1,-1):
adjust_heap(A,n,i)
a = []
while k:
n = n-1
temp = A[0]
A[0] = A[n]
A[n]=temp
a.append(A[n])
adjust_heap(A,n,0)
k=k-1
return a
def main():
input_str = raw_input()
s = input_str.split(' ')
s = [int(c) for c in s]
k = s[-1]
a = get_k_min(s[:-1],s[-1],len(s)-1)
a = [str(c) for c in a]
print ' '.join(a)
if __name__ == "__main__":
main()
userinput = input().split(' ')
target=userinput[len(userinput)-1]
result=[]
counter=0
userinput.pop()
userinput = list(map(int,userinput))
userinput.sort()
while(counter<int(target)):
result.append(userinput[counter])
counter+=1
result = list(map(str,result))
print(' '.join(result)) nums=input().split()
num=int(nums.pop(-1))
nums=sorted([int(i) for i in nums])
nums=[str(i) for i in nums]
print(' '.join(nums[:num]))
#反正就是一坨骚操作。。