#define LEFT(i)   2*(i)+1
#define RIGHT(i)  2*(i)+2
#define PARENT(i) ((i)-1)/2

int A[1000];
int size = 0;

void HEAPIFY(int i) {
   int big = i;
   if(LEFT(i) < size  && A[LEFT(i)] > A[big])  big = LEFT(i);
   if(RIGHT(i) < size && A[RIGHT(i)] > A[big]) big = RIGHT(i);
   if(big!=i) {
      int q = A[i]; A[i] = A[big]; A[big] = q; //Byt A[i] och A[big]
      HEAPIFY(big);
   }
}


int GETMAX() {
   int max = A[0];
   A[0] = A[--size];
   HEAPIFY(0);
   return max;
}


void INSERT(int newvalue) {
   int i = size++;
   while(i>0 && newvalue > A[PARENT(i)]) {
      A[i] = A[PARENT(i)];
      i = PARENT(i);
   }
   A[i] = newvalue;
}