# 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;
    if(scanf("%d",&n)!=1||n<=0||n<MAX){
        printf("Invalid number of tasks\n");
        return 0;
    }
    for(int i=0;i<n;i++){
        int TaskID,Priority;
        if(scanf("%d %d",&TaskID,&Priority)!=2|| TaskID <=0||Priority<=0){
            printf("Invalid Input\n");
            continue;
        }
        insert()
        }
        if(size>0)
        printf("Task with Highest priority: %d\n ",heap[0].TaskID);
        return 0;
    }

}