//by zxfx100
//(sizeof a = n) && (heap = a[1..n]) && (a[0] is null) && (range is int)
class MinHeap
{
public:
int a[32768], n;
void build()
{
n = 0;
}
void insert(int element)
{
a[++n] = element;
int i = n;
while(i > 1)
{
int j = i >> 1;
if(a[i] < a[j])
swap(a[i], a[j]);
i = j;
}
}
int get()
{
return a[1];
}
void extract()
{
a[1] = a[n--];
int i = 1, l = 2, r = 3;
while(l <= n)
{
int index = i;
if(a[l] < a[i])
index = l;
if(r <= n && a[r] < a[index])
index = r;
if(index == i)
break;
swap(a[i], a[index]);
r = (l = (i = index) << 1) + 1;
}
}
};