#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <set>
#include <list>
#include <cstdio>
#include <math.h>
#include <vector>
using namespace std;
typedef long long ll;
const int MAX = 1001;
int heap[MAX], sz = 0;
void push(int x){
int i = sz++;
while(i > 0){
int p = (i-1)/2;
if(heap[p] <= x) break;
heap[i] = heap[p];
i = p;
}
heap[i] = x;
}
int pop(){
int ret = heap[0];
int x = heap[--sz];
int i = 0;
while(2 * i + 1 < sz){
int a = 2 * i + 1, b = 2 * i + 2;
if(b<sz && heap[a]>heap[b]) a = b;
if(heap[a]>=x) break;
heap[i] = heap[a];
i = a;
}
heap[i] = x;
return ret;
}
int main(){
ios::sync_with_stdio(false);
push(0);
push(3);
push(2);
for(int i=0;i<3;i++){
cout<<heap[i]<<" ";
}
cout<<endl;
push(1);
for(int i=0;i<4;i++){
cout<<heap[i]<<" ";
}
cout<<endl;
pop();
for(int i=0;i<3;i++){
cout<<heap[i]<<" ";
}
cout<<endl;
return 0;
}