#include<stdio.h>
void heapify(int a[], int i);
void build_heap(int a[]);
void heapsort(int a[]);
int left(int i);
int right(int i);
int a[1000001]; // increased size since given in problem t<=10^6
int length;
int main()
{
int i;
scanf("%d",&length);
for(i=0;i<length;i++)
{
scanf("%d",&a[i]);
}
build_heap(a);
heapsort(a);
return 0;
}
void build_heap(int a[])
{
int i;
for(i=(length-1)/2;i>=0;i--)
heapify(a,i);
}
int left(int i)
{
return 2*i+1;
}
int right(int i)
{
return 2*i+2;
}
void heapify(int a[], int i)
{
int l=left(i);
int r=right(i);
int largest, store;
if (l<length && a[l]<a[i])
largest=l;
else
largest=i;
if(r<length && a[r]<a[largest])
largest=r;
if (largest!=i)
{
store=a[largest];
a[largest]=a[i];
a[i]=store;
heapify(a,largest);
}
}
void heapsort(int a[])
{
build_heap(a);
int i,store;
for(i=(length-1);i>=0;i--)
{
store=a[0];
a[0]=a[i];
a[i]=store;
printf("%d\n",a[i]);
length--;
heapify(a,0);
}
}
I2luY2x1ZGU8c3RkaW8uaD4Kdm9pZCBoZWFwaWZ5KGludCBhW10sIGludCBpKTsKdm9pZCBidWlsZF9oZWFwKGludCBhW10pOwp2b2lkIGhlYXBzb3J0KGludCBhW10pOwppbnQgbGVmdChpbnQgaSk7CmludCByaWdodChpbnQgaSk7CmludCBhWzEwMDAwMDFdOyAvLyBpbmNyZWFzZWQgc2l6ZSBzaW5jZSBnaXZlbiBpbiBwcm9ibGVtIHQ8PTEwXjYKaW50IGxlbmd0aDsKaW50IG1haW4oKQp7CiAgICBpbnQgaTsKCXNjYW5mKCIlZCIsJmxlbmd0aCk7Cglmb3IoaT0wO2k8bGVuZ3RoO2krKykKCXsKCQlzY2FuZigiJWQiLCZhW2ldKTsKCX0KCWJ1aWxkX2hlYXAoYSk7CgloZWFwc29ydChhKTsKCXJldHVybiAwOwp9CnZvaWQgYnVpbGRfaGVhcChpbnQgYVtdKQp7CiAgaW50IGk7Cglmb3IoaT0obGVuZ3RoLTEpLzI7aT49MDtpLS0pCiAgICBoZWFwaWZ5KGEsaSk7Cn0KCmludCBsZWZ0KGludCBpKQp7CglyZXR1cm4gMippKzE7Cn0KCmludCByaWdodChpbnQgaSkKewoJcmV0dXJuIDIqaSsyOwp9Cgp2b2lkIGhlYXBpZnkoaW50IGFbXSwgaW50IGkpCnsKCWludCBsPWxlZnQoaSk7CglpbnQgcj1yaWdodChpKTsKCWludCBsYXJnZXN0LCBzdG9yZTsKCWlmIChsPGxlbmd0aCAmJiBhW2xdPGFbaV0pCgkJbGFyZ2VzdD1sOwoJZWxzZQoJCWxhcmdlc3Q9aTsKCglpZihyPGxlbmd0aCAmJiBhW3JdPGFbbGFyZ2VzdF0pCgkJbGFyZ2VzdD1yOwoJaWYgKGxhcmdlc3QhPWkpCgl7CgkJc3RvcmU9YVtsYXJnZXN0XTsKCQlhW2xhcmdlc3RdPWFbaV07CgkJYVtpXT1zdG9yZTsKCQloZWFwaWZ5KGEsbGFyZ2VzdCk7CiAgICB9Cn0KCnZvaWQgaGVhcHNvcnQoaW50IGFbXSkKewoJYnVpbGRfaGVhcChhKTsKCWludCBpLHN0b3JlOwoJZm9yKGk9KGxlbmd0aC0xKTtpPj0wO2ktLSkKCXsKCQlzdG9yZT1hWzBdOwoJCWFbMF09YVtpXTsKCQlhW2ldPXN0b3JlOwoJCXByaW50ZigiJWRcbiIsYVtpXSk7CgkJbGVuZ3RoLS07CgkJaGVhcGlmeShhLDApOwoJfQp9