#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
typedef struct{
    int taskID;
    int priority;
}Task;
Task heap[MAX];
int heapSize=0;
void swap(Task *a,Task *b){
    Task temp=*a;
    *a=*b;
    *b=temp;
}
void heapifyUp(int index){
    while(index>0){
        int parent=(index-1)/2;
        if(heap[parent].priority>heap[index].priority){
            swap(&heap[parent],&heap[index]);
            index=parent;
        }
        else{
            break;
        }
    }
}
void insert(int taskID,int priority){
    heap[heapSize].taskID=taskID;
    heap[heapSize].priority=priority;
    heapifyUp(heapSize);
    heapSize++;
}
int main(){
    int n;
    if(scanf("%d",&n)!=1||n<1||n>1000){
        return 0;
    }
    for(int i=0;i<n;i++){
        int taskID,priority;
        if(scanf("%d %d",&taskID,&priority)!=2|| priority<0){
            printf("Invalid input\n");
        }
        else{
            insert(taskID,priority;
            printf("Task Added:%d\n",taskID);
        }
    }
    if(heapSize>0){
        printf("Task with Highest Priority:%d\n",heap[0].taskID);
    }
    return 0;
}