#include <iostream>
#define RIGHT(s) 2*s+1
#define LEFT(s) 2*s
using namespace std;
class MaxHeap
{
private:
int *a;
int heapsize;
int maxsize;
void maxHeapify(int i)
{
int l=LEFT(i);
int r=RIGHT(i);
int largest=i;
if(l<=heapsize && a[l]>a[i])
largest=l;
if(r<=heapsize && a[r]>a[largest])
largest=r;
if(largest!=i)
{
std::swap(a[i],a[largest]);
maxHeapify(largest);
}
}
public:
MaxHeap(int n)
{
a=new int[n+1];
heapsize=0;
maxsize=n;
}
void Insert(int s)
{
if(heapsize<maxsize)
{
a[++heapsize]=s;
maxHeapify(heapsize);
}
else
cout<<"Heap size exceeded. Can't Insert\n";
}
int extractMax()
{
maxHeapify(heapsize);
if(!isEmpty())
{
std::swap(a[1],a[heapsize--]);
maxHeapify(1);
return a[heapsize+1];
}
else
cout<<"Sorry, Heap Empty\n";
}
int size()
{
return heapsize;
}
bool isEmpty()
{
if(heapsize==0)
return 1;
return 0;
}
};
int main()
{
int n;
cin>>n;
MaxHeap heap(n);
for(int i=0;i<n;i++)
{
int x;
cin>>x;
heap.Insert(x);
}
while(!heap.isEmpty())
cout<<heap.extractMax()<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojZGVmaW5lIFJJR0hUKHMpIDIqcysxCiNkZWZpbmUgTEVGVChzKSAyKnMKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIE1heEhlYXAKewpwcml2YXRlOgoJaW50ICphOwoJaW50IGhlYXBzaXplOwoJaW50IG1heHNpemU7Cgl2b2lkIG1heEhlYXBpZnkoaW50IGkpCgl7CgkJaW50IGw9TEVGVChpKTsKCQlpbnQgcj1SSUdIVChpKTsKCQlpbnQgbGFyZ2VzdD1pOwoJCWlmKGw8PWhlYXBzaXplICYmIGFbbF0+YVtpXSkKCQkJbGFyZ2VzdD1sOwoJCWlmKHI8PWhlYXBzaXplICYmIGFbcl0+YVtsYXJnZXN0XSkKCQkJbGFyZ2VzdD1yOwoJCWlmKGxhcmdlc3QhPWkpCgkJewoJCQlzdGQ6OnN3YXAoYVtpXSxhW2xhcmdlc3RdKTsKCQkJbWF4SGVhcGlmeShsYXJnZXN0KTsKCQl9Cgl9CnB1YmxpYzoKCU1heEhlYXAoaW50IG4pCgl7CgkJYT1uZXcgaW50W24rMV07CgkJaGVhcHNpemU9MDsKCQltYXhzaXplPW47Cgl9Cgl2b2lkIEluc2VydChpbnQgcykKCXsKCQlpZihoZWFwc2l6ZTxtYXhzaXplKQoJCXsKCQkJYVsrK2hlYXBzaXplXT1zOwoJCQltYXhIZWFwaWZ5KGhlYXBzaXplKTsKCQl9CgkJZWxzZQoJCQljb3V0PDwiSGVhcCBzaXplIGV4Y2VlZGVkLiBDYW4ndCBJbnNlcnRcbiI7Cgl9CglpbnQgZXh0cmFjdE1heCgpCgl7CgkJbWF4SGVhcGlmeShoZWFwc2l6ZSk7CgkJaWYoIWlzRW1wdHkoKSkKCQl7CgkJCXN0ZDo6c3dhcChhWzFdLGFbaGVhcHNpemUtLV0pOwoJCQltYXhIZWFwaWZ5KDEpOwoJCQlyZXR1cm4gYVtoZWFwc2l6ZSsxXTsKCQl9CgkJZWxzZQoJCQljb3V0PDwiU29ycnksIEhlYXAgRW1wdHlcbiI7Cgl9CglpbnQgc2l6ZSgpCgl7CgkJcmV0dXJuIGhlYXBzaXplOwoJfQoJYm9vbCBpc0VtcHR5KCkKCXsKCQlpZihoZWFwc2l6ZT09MCkKCQkJcmV0dXJuIDE7CgkJcmV0dXJuIDA7Cgl9Cn07CgppbnQgbWFpbigpCnsKCWludCBuOwoJY2luPj5uOwoJTWF4SGVhcCBoZWFwKG4pOwoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQlpbnQgeDsKCQljaW4+Png7CgkJaGVhcC5JbnNlcnQoeCk7Cgl9Cgl3aGlsZSghaGVhcC5pc0VtcHR5KCkpCgkJY291dDw8aGVhcC5leHRyYWN0TWF4KCk8PGVuZGw7CglyZXR1cm4gMDsKfQ==