import java.util.*;
import java.io.*;
abstract class Heap{
protected int capacity;
protected int size;
protected int []items;
public Heap()
{
this.capacity = 10;
this.size = 0;
this.items = new int[capacity];
}
public int getLeftChildIndex(int parentindex){
return 2*parentindex+1;
}
public int getRightChildIndex(int parentindex){
return 2*parentindex+2;
}
public int getParentIndex(int childIndex){
return (childIndex-1)/2;
}
public boolean hasLeftChild(int parentindex)
{
return getLeftChildIndex(parentindex) < size;
}
public boolean hasRightChild(int parentindex)
{
return getRightChildIndex(parentindex) < size;
}
public boolean hasParent(int index){
return getParentIndex(index) >= 0;
}
public int leftChild(int parentindex){
return items[getLeftChildIndex(parentindex)];
}
public int rightChild(int parentindex){
return items[getRightChildIndex(parentindex)];
}
public int parent(int index)
{
return items[getParentIndex(index)];
}
public void swap(int indexone,int indextwo){
int temp = items[indexone];
items[indexone] = items[indextwo];
items[indextwo] = temp;
}
public void add(int item)
{
items[size] = item;
size++;
heapifyUp();
}
public void isEmpty(String name)
{
if(size == 0)
{
System.out.println(name+"cant poll");
}
}
public int poll()
{
isEmpty("its empty");
int item = items[0];
items[0] = items[size-1];
size--;
heapifyDown();
return item;
}
public void print()
{
for(int i=0;i leftChild(index))
{
smallerChildIndex = getRightChildIndex(index);
}
if(items[index] > items[smallerChildIndex])
{
break;
}
else{
swap(index,smallerChildIndex);
}
index = smallerChildIndex;
}
}
public void heapifyUp()
{
int index = size - 1;
while(hasParent(index) && parent(index) < items[index]){
swap(getParentIndex(index),index);
index = getParentIndex(index);
}
}
public static void main(String []args)
{
Scanner ob = new Scanner(System.in);
int n = ob.nextInt();
Heap myHeap = new MaxHeap();
for(int i=0;i