#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 Highest Priority: %d\n",heap[0].TaskID);
        return 0;
        
    }