#include<iostream>
using namespace std;
const int maxn=1e3+10;
struct priority_queue{
int data[maxn];
int size;
priority_queue(){
size=0;
}
void heap_up(int id) {
if (id == 1)return;
if (heap[id] > heap[id / 2]) {
swap(heap[id], heap[id / 2]);
heap_up(id / 2);
}
}
void add(int v) {
heap[++heapsize] = v;
heap_up(heapsize);
}
int top() {
return heap[1];
}
void heap_down(int id) {
if (id * 2 > heapsize)return;
int k = id;
if (heap[id * 2] > heap[k])k = id * 2;
if (id * 2 + 1 <= heapsize && heap[id * 2 + 1] > heap[k])k = id * 2 + 1;
if (k == id)return;
swap(heap[k], heap[id]);
heap_down(k);
}
void pop() {
heap[1] = heap[heapsize];
heapsize--;
heap_down(1);
}
};
int main(){
priority_queue ans;
for(int i=1;i<=10;i++){
ans.push(i);
}
cout<<ans.top()<<endl;
ans.pop();
cout<<ans.top()<<endl;
ans.pop();ans.pop();
cout<<ans.top()<<endl;
ans.push(220);
cout<<ans.top()<<endl;
}