#include<stdio.h>
#include<stdlib.h>
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 heapify_up(int index){
    if(index<0)
    return;
    int parent=(index-1)/2;
    if(heap[index].priority<heap[parent].priority){
        swap(&heap[index],&heap[parent]);
        heapify_up(parent);
    }
}
void insert(int taskId,int priority){
    heap[size].taskId=taskId;
    heap[size].priority=priority;
    heapify_up(size);
    size++;
    printf("Task Added: %d",taskId);
    printf("\n");
}
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",heap[0].taskId);
    printf("\n");
    return 0;
}