AA = raw_input().strip().split(' ')
A = []
###############初始化大堆###############
def fixUp(A):
k = len(A) - 1
while k >= 0 and A[k // 2] < A[k]:
A[k // 2], A[k] = A[k],A[k // 2]
k = k // 2
for num in AA:
A.append(int(num))
fixUp(A)
#######################排序调整过程###########
def fixDown(A):
A.insert(0,-1)
N = len(A) -1
k = 1
while 2*k <= N:
j = 2 * k
if j < N and A[j] < A[j + 1]:
j = j + 1
if A[k] < A[j]:
A[k],A[j ] = A[j],A[k]
k = j
else:
break
A.remove(-1)
print A
def delMaxElem(A):
maxElem = A[0]
N = len(A)
if N <= 0:
print "No array"
if N == 1:
return maxElem
else:
A[0] = A.pop()
fixDown(A)
return maxElem
###########sort##############
result = []
for i in range(len(A)):
result.append(delMaxElem(A))
print result