#include <stdio.h>
#include <stdlib.h>

#define MAX 100
struct  Task{
    int TaskID;
    int Priority;
};
struct Task heap[MAX];
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 Higest Priority:%d\n",heap[0].TaskID);
return 0;
}