#include <stdio.h>
#include <stdlib.h>


#define MAX_SIZE 1000
struct Task{
    int TaskID;
    int Priority;
};

struct Task heap[MAX_SIZE];
int size =0;

void swap(struct Task *a,struct Task *b){
    struct Task temp = *a;
    *a = *b;
    *b = temp;

}

void heapifyUp(int index){
    if(index<=0)
    return;
    int parent=(index-1)/2;
    if(heap[index].Priority<heap[parent].Priority){
        swap(&heap[index],&heap[parent]);
        heapifyUp(parent);
    }
}

void insert(int TaskID, int Priority){
    heap[size].TaskID=TaskID;
    heap[size].Priority = Priority;
    heapifyUp(size);
    size++;
    printf("Task Added: %d\n",TaskID);
int main(){
    int n;
    (scanf"%d",&n);
for(int i=0;i<n;i++){
    int TaskID,Priority;
    (scanf"%d %d",&TaskID,&Priority);
    if(TaskID<0||Priority<0){
        printf("Invalid Input\n");
        continue;
    }
    insert(TaskID, Priority);
 
}    
    printf("Task with Highest Priority: %d",highest.taskID);

return 0;
}