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