#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;
             }